角度 JS 脚本未更新视图

Angular JS script not updating view

本文关键字:更新 新视图 脚本 JS 角度      更新时间:2023-09-26

假设这是相当简单的修复,并且我完全错过了。

我基本上有一个按钮,当用户单击它时,它将使用 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';"并将其放在按钮单击功能之外将使其正常工作。然而,我正在创建一个应用程序,其中将有进一步的按钮单击事件,每个事件将相同的值更改为适用于按钮单击事件的特定值。

当您

$state.go('newState')导航到另一个视图时,从而在尝试设置$scope.newValue = 'Hello';时丢失当前$scope

您需要在"newSate-controller"中为要导航到的视图设置$scope.newValue = 'Hello';

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

这应该有效

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

首先在外面初始化它

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'});
};
}]);

在您的状态定义中使用"参数"参数

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