使用$ state.go更改状态不适用范围

时间:2015-05-27 08:12:06

标签: angularjs angularjs-scope angular-ui-router ionic-framework

我正在开发一个离子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()之外它会生效(但是,我只需要在点击按钮时才需要这样做)。

不确定,对我来说似乎很简单,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

实际上,有一个bug in Ionic framework regarding using states with dot notation,如果你必须在更改状态后设置值,你可以考虑使用ui-router events之一,所以当状态改变或开始改变你时可以更新控制器的$范围。

最重要的是,每次创建控制器的新实例时,必须在进入前往的状态后更新该值。