Javascript 角度JS脚本不更新视图

Javascript 角度JS脚本不更新视图,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,假设这是一个相当简单的修复,而我完全错过了一些东西 我基本上有一个按钮,当用户点击它时,它将使用ui路由器进入一个新的状态。在状态更改之后,脚本中的值将立即导致简单段落标记的空值填充我在脚本中的$scope中设置的值 这不起作用,请参见以下示例: 脚本 app.controller('myCtrl', ['$scope', 'Auth', '$state', '$timeout', function($scope, Auth, $state, $timeout) { $scope.butt

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

我基本上有一个按钮,当用户点击它时,它将使用ui路由器进入一个新的状态。在状态更改之后,脚本中的值将立即导致简单段落标记的空值填充我在脚本中的$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>
{{newValue}


现在,我已经尝试了各种组合,并注意到通过使用“$scope.newValue=”Hello“”并将其放置在按钮单击功能之外将使其正常工作。但是,我正在创建一个应用程序,其中会有更多的按钮单击事件,每个事件都会将相同的值更改为适用于按钮单击事件的特定值。

首先在外部初始化它

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 },
            .......
            .......
        })

首先在外部初始化它

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 },
            .......
            .......
        })

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

问题出现在$state.go('newState')行;它将重定向到另一个状态并重新加载页面。如果它的状态相同,则在您执行
$state.go('newState')
导航到另一个视图时,它也可能发生,从而在尝试设置
$scope.newValue='Hello'时失去当前的
$scope
范围


您需要设置
$scope.newValue='Hello'newState controller
”中为您导航到的视图编写代码。

当您执行
$state.go('newState')
导航到另一个视图时,将失去您在尝试设置
$scope.newValue='Hello'时所处的当前
$scope

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

}]);
您需要设置
$scope.newValue='Hello'newSate controller
”中为您要导航到的视图添加code>

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

}]);
这应该行得通



这应该可以

您是否试图在
newState
中访问
$scope.newValue
的值?没错,非常简单。我甚至设法让它在其他地方的代码中工作,但不是为了这个?您是否试图在
newState
中访问
$scope.newValue
的值?没错,非常简单。我甚至设法让它在其他地方的代码中工作,但不是为了这个?好吧,我知道你是从哪里来的,但是建议的修复方法是什么?为什么要使用$state.go('newState');如果您希望更新范围变量,并在HTML中反映该更改。只需使用您想要的值进行初始化,即可反映更改。好的,我知道您是从哪里来的,但是建议的修复方法是什么?为什么要使用$state.go('newState');如果您希望更新范围变量,并在HTML中反映该更改。只需使用您希望反映更改的任何值进行初始化。那么“newState”的控制器名称是什么,它是否引用同一个控制器?实际上,我已将整个活动保留在同一个控制器中。您可以使用$stateParams进行修复,您可以在参数中发送不同的字符串以设置不同的值“newState”的控制器名称是什么,它引用的是同一个控制器吗?实际上,我将整个活动都保存在同一个控制器中。您可以使用$stateParams来进行修复,您可以在参数中发送不同的字符串以设置不同的值类似于下面的值,对此建议的修复方法是什么?对不起,我只是最近才意识到自己有点神经质,仍然在和itOkay打交道。我想我知道我到底哪里出了问题。我试图通过让所有控制器在一个控制器中工作来限制控制器的数量。然而,我真的应该使用不止一个控制器来实现我所需要的——那么我认为这就是我出错的地方吗?这是完全正确的。如果视图不是局部的,我通常使用1个控制器来处理1个视图,并且我使用
ng include
。好的,我有三个按钮单击事件,所以现在需要三个控制器。我想有些事情是你在限制代码数量时无法避免的。从技术上讲,如果你要进入子状态,你仍然可以在子状态中访问父级的作用域。但这是一个完全不同的故事。与下面类似,建议的修复方法是什么?对不起,我只是最近才意识到自己有点神经质,仍然在和itOkay打交道。我想我知道我到底哪里出了问题。我试图通过让所有控制器在一个控制器中工作来限制控制器的数量。然而,我真的应该使用不止一个控制器来实现我所需要的——那么我认为这就是我出错的地方吗?这是完全正确的。如果视图不是局部的,我通常使用1个控制器来处理1个视图,并且我使用
ng include
。好的,我有三个按钮单击事件,所以现在需要三个控制器。我想有些事情是你在限制代码数量时无法避免的。从技术上讲,如果你要进入子状态,你仍然可以在子状态中访问父级的作用域。但这是一个完全不同的故事。对不起,鼠标移动了(本来是要向上投票的-改变了它)x)这应该行得通为什么?添加详细信息/解释以完成回答。@CoderJohn您可以编辑一个答案,而不是发布几个答案。因为我已经删除了使状态重定向@JaiOk的代码,所以您应该在某些服务中初始化一个变量,然后重定向,重定向后从服务中获取初始化的变量并更新景色。如果这对你有效,我会更新答案吗?对不起,鼠标移动了(本来是要向上投票的-c)