Angularjs angulars js变量值未更新

Angularjs angulars js变量值未更新,angularjs,Angularjs,在下面的代码中,我有一个名为$scope.name的变量。默认情况下,它的值为“Hello 1”。5秒钟后,我设置了setTimeout函数,该函数将$scope.name的值更新为“Hello 2” 该变量显示调试模式中的更改。但是新值不会更新为{{name}。换句话说,它只是在页面上显示旧值“Hello 1”,而不是“Hello 2”,这是必需的 提前谢谢你的帮助 var quizApp = angular.module("quizApp",[]); quizApp.controller("

在下面的代码中,我有一个名为
$scope.name
的变量。默认情况下,它的值为“Hello 1”。5秒钟后,我设置了
setTimeout
函数,该函数将
$scope.name
的值更新为“Hello 2”

该变量显示调试模式中的更改。但是新值不会更新为{{name}。换句话说,它只是在页面上显示旧值“Hello 1”,而不是“Hello 2”,这是必需的

提前谢谢你的帮助

var quizApp = angular.module("quizApp",[]);
quizApp.controller("quizCtrl",function($scope){

    $scope.name = "Hello 1";

    function pAHL(){
        $scope.name ="hello 2";
    }
    setTimeout(pAHL, 5000)
})
setTimeout(pAHL,5000)
更改为
$timeout(pAHL,5000)
并将
$timeout
注入quizCtrl

var quizApp = angular.module("quizApp",[]);
quizApp.controller("quizCtrl",function($scope, $timeout){
    $scope.name = "Hello 1";

    function pAHL(){
        $scope.name ="hello 2";
    }
    $timeout(pAHL, 5000)
})
或者第二个选项是使用
$scope.$apply()

setTimeout(pAHL,5000)
更改为
$timeout(pAHL,5000)
并将
$timeout
注入quizCtrl

var quizApp = angular.module("quizApp",[]);
quizApp.controller("quizCtrl",function($scope, $timeout){
    $scope.name = "Hello 1";

    function pAHL(){
        $scope.name ="hello 2";
    }
    $timeout(pAHL, 5000)
})
或者第二个选项是使用
$scope.$apply()

setTimeout(pAHL,5000)
更改为
$timeout(pAHL,5000)
并将
$timeout
注入quizCtrl

var quizApp = angular.module("quizApp",[]);
quizApp.controller("quizCtrl",function($scope, $timeout){
    $scope.name = "Hello 1";

    function pAHL(){
        $scope.name ="hello 2";
    }
    $timeout(pAHL, 5000)
})
或者第二个选项是使用
$scope.$apply()

setTimeout(pAHL,5000)
更改为
$timeout(pAHL,5000)
并将
$timeout
注入quizCtrl

var quizApp = angular.module("quizApp",[]);
quizApp.controller("quizCtrl",function($scope, $timeout){
    $scope.name = "Hello 1";

    function pAHL(){
        $scope.name ="hello 2";
    }
    $timeout(pAHL, 5000)
})
或者第二个选项是使用
$scope.$apply()


您不需要使用
$timeout

function pAHL(){
    $scope.name ="hello 2";
    $scope.$apply();
}
编辑 避免摘要错误的更优雅的解决方案是使用$timeout:

function pAHL(){
    $timeout(function () {
        $scope.name ="hello 2";
    });
}

我们应该做到这一点

您不需要使用
$timeout

function pAHL(){
    $scope.name ="hello 2";
    $scope.$apply();
}
编辑 避免摘要错误的更优雅的解决方案是使用$timeout:

function pAHL(){
    $timeout(function () {
        $scope.name ="hello 2";
    });
}

我们应该做到这一点

您不需要使用
$timeout

function pAHL(){
    $scope.name ="hello 2";
    $scope.$apply();
}
编辑 避免摘要错误的更优雅的解决方案是使用$timeout:

function pAHL(){
    $timeout(function () {
        $scope.name ="hello 2";
    });
}

我们应该做到这一点

您不需要使用
$timeout

function pAHL(){
    $scope.name ="hello 2";
    $scope.$apply();
}
编辑 避免摘要错误的更优雅的解决方案是使用$timeout:

function pAHL(){
    $timeout(function () {
        $scope.name ="hello 2";
    });
}

我们应该做到这一点

如果现在从angular内调用
pAHL
,它将产生摘要错误。我认为,
$scope.$apply
应该在发生非角度事件的地方使用,这样您就可以对角度和非角度事件重用相同的函数code@doodeec是的,你说的很有道理。但我的解决方案是基于某些假设的,这些假设在这种情况下成立。如果现在从angular内部调用
pAHL
,它将产生摘要错误。我认为,
$scope.$apply
应该在发生非角度事件的地方使用,这样您就可以对角度和非角度事件重用相同的函数code@doodeec是的,你说的很有道理。但我的解决方案是基于某些假设的,这些假设在这种情况下成立。如果现在从angular内部调用
pAHL
,它将产生摘要错误。我认为,
$scope.$apply
应该在发生非角度事件的地方使用,这样您就可以对角度和非角度事件重用相同的函数code@doodeec是的,你说的很有道理。但我的解决方案是基于某些假设的,这些假设在这种情况下成立。如果现在从angular内部调用
pAHL
,它将产生摘要错误。我认为,
$scope.$apply
应该在发生非角度事件的地方使用,这样您就可以对角度和非角度事件重用相同的函数code@doodeec是的,你说的很有道理。但我的解决方案是基于某些假设的,这些假设在这种情况下成立。