我们希望在我们的应用程序中根据某些因素设置动态启动状态(如果您对上下文感兴趣,请向下滚动)。
我们有以下代码来实现它:我们有一个假的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
回调中执行时,它会产生一个奇怪的错误:
我们有两个HTML节点,ng-show
绑定到同一个变量,但有一个被否定了。因此,在任何时候,都应该显示其中一个。但是,angular会将ng-hide
添加到两个节点!
只有在$ionicPlatform.ready
内或在超时后触发导航时才会出现此错误。
似乎角度装订机械在某些时候被破坏了。 任何想法怎么可能发生这种情况?
上下文
如果Android应用是通过网络上的深层链接启动的 - 即应用程序拦截的HTTP链接,我们希望阅读原始请求网址并决定路由。
为此,我使用webintent plugin。但是我只能在插件初始化时读取它的输出,即在$ionicPlatform.ready
回调内。
修改
我尝试将绑定表达式从showEmptyTimeline
更改为foo.showEmptyTimeline
以及稍后showEmptyTimeline()
方法调用,在调用I console.log
内容中,它们是布尔值false
。
将回调从doNormalStartup
更改为function(){doNormalStartup()}
并不会改变任何内容。
答案 0 :(得分:0)
尝试使用
//p.add(new JLabel(ico));
JLabel label = new JLabel(ico);
label.setSize( label.getPreferredSize());
label.setLocation(...);
p.add(label);
代替你的代码
答案 1 :(得分:0)
角度1.4.x中的问题似乎是this angular bug。使用ng-if
代替ng-show
可以解决问题。