Sto utilizzando ui-route per la navigazione.
Ho stato padre chiamato principale, è un abstract
stato (l'url: /main) e del bambino afferma prodotti e utenti (URL: /main/prodotti e /main/utenti).
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",
})
}
]);
E qui il mio controller:
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")
});
Il codice 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>
Come potete vedere, sto usando: $ state.go ("main.products ", {}, {reload: true}) per la navigazione
Quando faccio clic su utenti/prodotti sul menu, lo MainCtrl
reinizializza !!
È perché il {reload:true}
.
Le mie domande:
1) Perché il controller di stato "padre" viene reinizializzato anche a ogni clic?
2) Ho bisogno di un elegante soluzione per evitare di il MainCtrl
a reinizializzare!
Ecco l'esempio completo - plunker vedere la console.
Perché senti la necessità di forzare il reload (usando il parametro '{reload: true}')? – JAAulde
Ho le mie ragioni, devo usarlo nella mia applicazione, ovviamente senza che tutto funzioni perfettamente – cheziHoyzer
* sospiro * Stai chiedendo una soluzione e non spiegherai il tuo pieno intento. Come tale, la mia risposta alla tua prima domanda è "Perché gli sviluppatori di UI Router dicono che è come dovrebbe funzionare. (Http://angular-ui.github.io/ui-router/site/#/api/ui.router. stato. $ stato) "La mia risposta alla seconda domanda è:" Non sono state fornite sufficienti informazioni, anche dopo che è stata richiesta. Buona fortuna. " – JAAulde