che*_*zer 5 javascript angularjs angular-ui-router
我正在使用ui-route进行导航.
我有一个名为main的父状态,它是一个abstract状态(url:/ main)和子状态产品和用户(urls:/ main/products和/ main/users).
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",
})
}
]);
Run Code Online (Sandbox Code Playgroud)
在这里我的控制器:
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")
});
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在使用: $ state.go("main.products",{},{reload:true}) 用于导航
当我点击菜单上的用户/产品时,MainCtrl 重新初始化 !!
这是因为{reload:true}.
我的问题:
1)为什么"父亲"状态控制器也会在每次点击时重新初始化?
2)我需要一个优雅的解决方案,避免了MainCtrl对重新初始化!
这是完整的例子 - plunker 请看控制台.
Art*_*ski 12
$state.go呼叫改为这样的事情$state.go("main.users",{},{reload: "main.users"})由于ui-router 0.2.14你可以传递字符串作为reload值 - ui路由器将刷新与传递的字符串及其所有子节点匹配的状态.
| 归档时间: |
|
| 查看次数: |
12632 次 |
| 最近记录: |