Angular:更新子函数中的作用域var

Angular: update scope var within child function

本文关键字:作用域 var 子函数 更新 Angular      更新时间:2023-09-26

在app.js:中

.controller('MainCtrl', function($scope) {
 $scope.history = {
            drive:  "Jim"
        };
 $scope.getNote = function () {
     $scope.history.drive ="Eric";
 }
 };

在HTML视图中:

<textarea name="notesdata">{{history.drive}}</textarea>

当视图加载时,我在文本区域看到Jim。但当我调用getNote()时,我希望它会变为Eric,而不是。我做错了什么?

我尝试添加$scope.apply();在$scope.history.drive="Eric"之后;但随后我得到一个"错误:$apply-in-process"

只是一个拼写错误。

此:

$scope.getNote() = function () {
  $scope.history.drive ="Eric";
}

应该是这样的:

$scope.getNote = function () {
  $scope.history.drive ="Eric";
}

这是一把小提琴:http://jsfiddle.net/u67kov5e/

我认为您可能与您对$scope.apply()的想法非常接近。

如果您在不在"角度世界"中的事件侦听器内调用$scope.getNote(),例如,您已手动绑定到"单击"事件而不使用ng-click,则在调用$scope.getNote() 时需要触发摘要

最好的方法是这样的:

// pseudocode representing non-angular event
on('someEvent', function (){
  // trigger a digest to tell angular about this event
  $scope.$apply(function (){
    $scope.getNote();
  });
});

fiddle运行良好,因为ng-click指令在其内部触发了摘要。