我正在开发一个离子angularJs应用程序,我需要在按钮点击时更改状态。除了许多其他州,我有两个以下的州。
.state('app.a', {
url : "/base/a",
views : {
'myContent' : {
templateUrl : "a.html",
controller : 'MyController'
}
}
})
.state('app.b', {
url : "/base/b",
views : {
'myContent' : {
templateUrl : "b.html",
controller : 'MyController'
}
}
})
现在在a.html中我有一个调用方法clickMe()的按钮。
$scope.clickMe = function () {
$state.go('app.b');
$scope.someVal = 20;
//$timeout(function(){
// $scope.$apply();
//}, 0);
}
b.html会加载,但someVal的值不会反映在b.html上。有一点需要注意,如果我将$ scope.someVal = 20放在clickMe()之外它会生效(但是,我只需要在点击按钮时才需要这样做)。
不确定,对我来说似乎很简单,任何帮助都会受到赞赏。
答案 0 :(得分:2)
实际上,有一个bug in Ionic framework regarding using states with dot notation,如果你必须在更改状态后设置值,你可以考虑使用ui-router events之一,所以当状态改变或开始改变你时可以更新控制器的$范围。
最重要的是,每次创建控制器的新实例时,必须在进入前往的状态后更新该值。