Shl*_*omo 5 javascript tabs angularjs angular-ui angular-ui-router
当我单击选项卡时,相应的控制器将执行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>
Run Code Online (Sandbox Code Playgroud)
状态:
.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"
}
}
} )
Run Code Online (Sandbox Code Playgroud)
你有ui-view错误的地方,这是要求使用标签vm.tabs().
由于ng-repeat渲染div 有4个标签,因为它已经放置在tab要重复使用的元素中ng-repeat.
当ui-view指令在第4页上呈现时,检查浏览器网址并询问具有4个特定内容的具体内容tabs为什么所有带模板的控制器在您的应用内被调用了4次.
标记
<tabset>
<tab ng-repeat="tab in vm.tabs()"
heading="{{ tab.text | translate }}"
ui-sref="p.search.details.{{ tab.id }}"
active="tab.active">
</tab>
</tabset>
<div ui-view="tabContent"></div>
Run Code Online (Sandbox Code Playgroud)