我正在使用 ui-route 进行导航。
我有一个叫做父亲的国家main, 这是一个abstract
状态(网址:/main) 和子状态products and users (urls: /主要产品 and /主/用户).
app.config(["$stateProvider", "$urlRouterProvider",
function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise("/main/products");
$stateProvider
.state("main", {
url:"/main",
templateUrl: "main.html",
abstract: true,
controller: "MainCtrl",
})
.state("main.products", {
templateUrl: "products.html",
controller: "productsCtrl",
})
.state("main.users", {
templateUrl: "users.html",
controller: "usersCtrl",
})
}
]);
这是我的控制器:
app.controller('MainCtrl', function($scope,$state) {
console.log("I'm Main controller")
$scope.goToProduct = function()
{
//$state.go("main.products",{})
$state.go("main.products",{},{reload:true})
}
$scope.goToUsers = function()
{
//$state.go("main.users",{})
$state.go("main.users",{},{reload:true})
}
});
app.controller('usersCtrl', function() {
console.log("I'm users controller")
});
app.controller('productsCtrl', function() {
console.log("I'm products controller")
});
HTML:
<ul>
<li style="cursor:pointer" ng-click="goToProduct()">Click for products</li>
<li style="cursor:pointer" ng-click="goToUsers()">Click for users</li>
</ul>
<br>
<div style="font-size:28px" ui-view></div>
正如你所看到的,我正在使用:$state.go("main.products",{},{reload:true})用于导航
当我单击菜单上的用户/产品时MainCtrl
重新初始化!!
这是因为{reload:true}
.
我的问题:
1)为什么“父亲”状态控制器也会在每次点击时重新初始化?
2)我需要一个elegant解决方案avoid the MainCtrl
to 重新初始化!
这是完整的示例 -plunker http://plnkr.co/edit/G4wsPSh3tosMcElEMXKq?p=preview请查看控制台。