感謝SO社區的一些很好的幫助,我有一個工作角度SPA,使用ui-router庫使用多個狀態/視圖。不過,我得到的行爲似乎與angular-ui-router
文檔不一致。角度ui路由器onEnter功能沒有射擊
從自己的文件約onEnter,我希望,任何時候我用$state.go("home")
,該onEnter()
事件綁定到該州的配置對象將揭開序幕,但我沒有看到這一點。例如:
/* myApp module */
var myApp = angular.module('myApp', ['ui.router'])
.config(['$stateProvider', function ($stateProvider) {
$stateProvider.state('home', {
url: "/",
views: {
'top': {
url: "",
template: '<div>top! {{topmsg}}</div>',
controller: function ($scope) {
$scope.topmsg = "loaded top!";
console.log("top ctrl!");
},
onEnter: function() {
console.log("entered bottom state's onEnter function");
}
},
'middle': {
url: "",
template: '<div>middle! {{middlemsg}}</div>',
controller: function ($scope) {
$scope.middlemsg = "loaded middle!";
console.log("middle ctrl!");
},
onEnter: function() {
console.log("entered bottom state's onEnter function");
}
},
'bottom': {
url: "",
template: '<div>bottom! {{bottommsg}}</div>',
controller: function ($scope) {
$scope.bottommsg = "loaded bottom!";
console.log("bottom ctrl!");
},
onEnter: function() {
console.log("entered bottom state's onEnter function");
}
}
},
onEnter: function() {
console.log("entered home state");
}
});
}])
.controller('MyAppCtrl', function ($scope, $state/*, $stateParams*/) {
$scope.statename = $state.current.name;
$scope.testmsg = "app scope working!";
console.log("MyAppCtrl initialized!");
$state.go("home");
});
你可以從所有國家的配置對象的onEnter()
通話時看到,我的期望是,當家庭狀態的負載,我會開始看到的一切,他們打州/視圖的列表發射他們的控制檯消息。但是,從home
狀態的onEnter
事件中只記錄第一個entered home state
消息。沒有其他視圖的onEnter
正在被擊中。我誤解了文檔嗎?
Here is a long-awaited fiddle來演示。只需在Firebug/chrome devtools中顯示控制檯,您將看到缺少控制檯輸出。
任何幫助將是偉大的。我使用angular 1.2和ui-router 0.2.0。提前致謝!
這將是一個更容易調試工作示例(即Plunkr)。 –
@NateAbele對不起,花了這麼長時間,但任何有興趣的人都可以找到小提琴。謝謝! – tengen
您也可以考慮使用[$ scope events](http://stackoverflow.com/questions/16094940/what-is-the-lifecycle-of-an-angularjs-controller)而不是使用路由器之一。 –