Tôi đang sử dụng tuyến đường ui để điều hướng.
Tôi đã trạng thái cha gọi chính, nó là một abstract
nhà nước (url: /main) và con nói sản phẩm và người dùng (url: /main/sản phẩm và /main/người dùng).
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",
})
}
]);
Và đây bộ điều khiển của tôi:
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>
Như bạn thấy, tôi đang sử dụng: $ state.go ("main.products ", {}, {reload: true}) để điều hướng
Khi tôi nhấp vào người dùng/sản phẩm trên menu, hãy MainCtrl
reinitialize !!
Đó là vì {reload:true}
.
Câu hỏi của tôi:
1) Tại sao trình điều khiển trạng thái "cha" cũng khởi động lại trên mỗi nhấp chuột?
2) Tôi cần một nhã giải pháp cho tránh các MainCtrl
để reinitialize!
Đây là ví dụ hoàn chỉnh - plunker hãy xem bảng điều khiển.
Tại sao bạn cảm thấy cần phải buộc tải lại (sử dụng tham số '{reload: true}')? – JAAulde
Tôi có lý do, tôi phải sử dụng nó trong ứng dụng của tôi, tất nhiên nếu không có nó hoạt động hoàn hảo – cheziHoyzer
* thở dài * Bạn đang yêu cầu giải pháp, và bạn sẽ không giải thích đầy đủ ý định của mình. Như vậy, câu trả lời của tôi cho câu hỏi đầu tiên của bạn là "Bởi vì các nhà phát triển giao diện người dùng Router nói rằng đó là cách nó hoạt động. (Http://angular-ui.github.io/ui-router/site/#/api/ui.router. tiểu bang. $ state) "Câu trả lời của tôi cho câu hỏi thứ hai của bạn là" Không cung cấp đủ thông tin, ngay cả sau khi được yêu cầu. Chúc may mắn. " – JAAulde