AngularJS $范围不填充视图

And*_*yne 0 angularjs

我有这样的观点:

<div ng-controller= "test" ng-init = "doit()">
    <span>{{testval}}</span>
</div>
Run Code Online (Sandbox Code Playgroud)

视图的控制器如下所示:

function test($scope){
    var counter = 0;
    $scope.doit = function(){
       console.log('switched to view');
       $scope.testval = counter++; 
    };
};
Run Code Online (Sandbox Code Playgroud)

我第一次切换到'test'控制的视图时,显示'0'.之后,它什么都没显示,但console.log继续触发.每次切换到视图并通过修改$ scope成功更新视图时,如何将其设置为执行'doit'?

谢谢

Mar*_*cok 5

删除ng-init()并将对doit()的调用放入控制器:

function test($scope){
    var counter = 0;
    $scope.doit = function(){
       console.log('switched to view');
       $scope.testval = counter++; 
    };
    $scope.doit();
};
Run Code Online (Sandbox Code Playgroud)

每次切换到此视图时,控制器代码都将执行.如果您希望计数器在视图更改之间保持不变,则必须将其放入服务或$ rootScope中(因为当您移动到另一个视图时,控制器及其$ scope将被销毁).