Angular JS脚本不更新视图

时间:2016-03-18 09:21:07

标签: javascript jquery angularjs

假设这是一个相当简单的修复,而且我已经完全错过了一些东西..

我基本上有一个按钮,当用户点击它时,它将使用ui-router进入新状态。在状态更改之后,脚本中的值将立即使用我在脚本中的$ scope中设置的值填充简单段落标记的空值。

这不起作用,请参见下面的示例:

脚本

app.controller('myCtrl', ['$scope', 'Auth', '$state', '$timeout',  
function($scope, Auth, $state, $timeout) {

$scope.buttonClick = function () {
    $state.go('newState');
    $timeout(function () {
        $scope.newValue = 'Hello';
    }, 1000);
};

}]);

HTML

<p>{{newValue}}</p>

现在,我已经尝试了各种组合,并注意到通过取“ $ scope.newValue ='Hello'; '这一行并将其置于按钮点击功能之外将导致它工作得很好。然而,我正在创建一个应用程序,其中将有进一步的按钮单击事件,每个事件都将相同的值更改为适用于按钮单击事件的特定值。

4 个答案:

答案 0 :(得分:2)

当您正在$state.go('newState')导航到另一个视图,从而在尝试设置$scope

时失去当前的$scope.newValue = 'Hello';

您需要在&#34; $scope.newValue = 'Hello';&#34;中设置newSate-controller。对于您导航到的视图。

答案 1 :(得分:2)

app.controller('myCtrl', ['$scope', 'Auth', '$state', '$timeout',  
function($scope, Auth, $state, $timeout) {
$scope.newValue = '';
$scope.buttonClick = function () {
    $timeout(function () {
        $scope.newValue = 'Hello';
    }, 1000);
};

}]);

这应该有效

答案 2 :(得分:0)

首先在外面初始化

app.controller('myCtrl', ['$scope', 'Auth', '$state', '$stateParams', '$timeout',  
function($scope, Auth, $state, $timeout) {
if( $stateParams.newVal != null ){
    $scope.newValue = $stateParams.newVal;
}
$scope.buttonClick = function () {
    $state.go('newState', { newVal : 'Hello'});
};

}]);

在你的州定义中使用'params'参数

.state('newState', {
            .......
            .......
            params : { newVal: null },
            .......
            .......
        })

答案 3 :(得分:0)

问题在于$ state.go('newState');它重定向到另一个状态并重新加载页面。如果它的状态相同也可能发生