我們希望有一個動態的啓動狀態在我們的應用程序取決於某些因素(向下滾動,如果你是對上下文感興趣)。
我們有以下代碼來實現它:我們有一個虛假的routing
狀態,這是一個沒有UI的默認狀態,它決定了路由。
mainModule.config(function($stateProvider, $urlRouterProvider) {
// ...
$stateProvider.state({
'routing': {
url: '/routing',
controller: 'RoutingController'
}
});
$urlRouterProvider.otherwise('/routing');
});
mainModule.controller('RoutingController', function($state, $ionicPlatform, $timeout) {
function doNormalStartup() {
console.log("doNormalStartup");
$state.go('timeline');
}
doNormalStartup(); // fine
// $ionicPlatform.ready(doNormalStartup); // double ng-hide bug!
// $timeout(0).then(doNormalStartup); // bug as well
});
爲簡單起見,我把這個例子放在它應該總是路由到timeline
狀態。當我在RoutingController
直接做狀態的導航,它工作正常,但是當我在$ionicPlatform.ready
回調做到這一點,它會產生一個奇怪的錯誤:
我們有ng-show
綁定到相同的變量兩個HTML節點,而是一個否定。所以在任何時候,都應該顯示其中的一個。然而,角向兩個節點添加ng-hide
!
該錯誤只發生在$ionicPlatform.ready
內部或超時後導航。
好像角裝訂機械被在某些時候打破。 任何想法如何可能發生?
語境:
如果Android應用程序是通過從網站深層鏈接開始 - 即HTTP鏈接通過一個應用程序截獲,我們要讀取原始的請求URL,然後決定路由。我想用webintent plugin。但是我只能在插件初始化時讀取它的輸出,即在$ionicPlatform.ready
回調中。
編輯:
我試圖改變綁定表達式從showEmptyTimeline
到foo.showEmptyTimeline
後來showEmptyTimeline()
的方法調用,調用裏面我console.log
的內容,他們是一個布爾false
。
將doNormalStartup
的回調更改爲function(){doNormalStartup()}
不會改變任何內容。
嘗試console.log()showEmptyTimeline的時候你需要它。什麼是價值?也許它是不確定的! – cdslijngard
我認爲這可以鏈接到https://github.com/angular/angular.js/issues/13380我需要調查更多一點 –