【发布时间】:2015-06-03 11:53:21
【问题描述】:
当我单击一个选项卡时,相应的控制器会执行 4 次。为什么会这样?
例如DetailsPersonController 的 init 函数执行了 4 次。仅应在加载选项卡的视图后执行。
HTML 标签:
<tabset>
<tab ng-repeat="tab in vm.tabs()"
heading="{{ tab.text | translate }}"
ui-sref="p.search.details.{{ tab.id }}"
active="tab.active">
<div ui-view="tabContent"></div>
</tab>
</tabset>
州:
.state( "p.search.details", {
url: "/details",
abstract: true,
templateUrl: "app/modules/partials/p/search/details/details.html",
controller: "DetailsController",
controllerAs: "vm"
} )
.state( "p.search.details.person", {
url: "/person",
views: {
"tabContent": {
templateUrl: "app/modules/partials/p/search/details/person/person.html",
controller: "DetailsPersonController",
controllerAs: "vm"
}
}
} )
.state( "p.search.details.details", {
url: "/details",
views: {
"tabContent": {
templateUrl: "app/modules/partials/p/search/details/details/details.html",
controller: "DetailsDetailsController",
controllerAs: "vm"
}
}
} )
.state( "p.search.details.driver", {
url: "/driver",
views: {
"tabContent": {
templateUrl: "app/modules/partials/p/search/details/driver/driver.html",
controller: "DetailsDriverController",
controllerAs: "vm"
}
}
} )
.state( "p.search.details.tests", {
url: "/tests",
views: {
"tabContent": {
templateUrl: "app/modules/partials/p/search/details/tests/tests.html",
controller: "DetailsTestsController",
controllerAs: "vm"
}
}
} )
【问题讨论】:
-
原因可能是您在
ng-repeat中使用了vm.tabs(),即在每个摘要循环中被调用4 次..尝试在那里提供静态数组并看看发生了什么? -
静态数组没有修复,还是调用了4次
-
控制器被调用的标签数量与
vm.tabs()传递的标签数量相同!奇怪的!为什么? -
由于摘要周期,摘要周期被调用的次数被评估..见这个小提琴jsfiddle.net/7MhLd/850
-
Duuuuuudddeeee :D 我快疯了
标签: javascript angularjs tabs angular-ui-router angular-ui