在常規的angularjs ui-router狀態下,控制器在每次激活狀態時都會運行。在處理離子應用中的命名視圖時,我發現情況並非如此。命名的視圖控制器每個元素(遊戲)只運行一次。例如。用戶顯示一個遊戲 - >控制器運行。然後用戶轉到另一個狀態,並在返回時顯示相同的遊戲控制器不再運行 - 該視圖使用之前生成的範圍。我想用控制器重新初始化遊戲範圍。如何在每次啓動angularjs UI路由器命名的視圖時運行控制器?
我的代碼:
//app.js
.state('app.game', {
url: "/x/{gameID:int}",
views: {
'menuContent': {
templateUrl: "templates/html/my-game.html",
controller: 'GameCtrl'
}
}
})
...
//controllers.js
controllers.controller('GameCtrl', function ($scope, $stateParams, Game) {
//alert("running controller");
Game.get({id: $stateParams.gameID}, function(res){
$scope.game = res;
});
})
編輯:其實,我用這個代碼去遊戲的觀點(目前GUID主意打從史蒂芬·韋克斯勒)
<ion-view view-title="Games">
<ion-content>
<h1>Games</h1>
<ion-list>
<ion-item nav-clear menu-close href="#/app/x/{{game.id}}?guid= {{guid()}}" ng-repeat="game in games">
{{game.id}}
</ion-item>
</ion-list>
</ion-content>
</ion-view>
這似乎是我正在尋找。我會盡快更新你的。 – user1167937 2015-03-31 14:11:02
記得告訴我這是行得通的,如果你可以把這個答案標記爲有用的,請 – Matho 2015-03-31 14:13:33
好的,所以其他的stackoverflow問題是關於這個問題(我的壞!)。你的答案似乎是正確的,但是對我來說最有效的方式是將'cache:false'添加到app.game狀態。從另一個問題鏈接到更多的文檔。謝謝你們。 – user1167937 2015-03-31 14:22:25