Angular:更新子函数中的范围var

时间:2014-09-24 21:33:50

标签: javascript angularjs angularjs-scope

在app.js中:

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

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

 };

在HTML视图中:

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

当视图加载时,我会在textarea中看到Jim。但是当我调用getNote()时,我会期望它改为Eric而不是。我究竟做错了什么?

我尝试添加$ scope.apply();在$ scope.history.drive =&#34; Eric&#34 ;;之后但后来我得到了一个&#34;错误:$申请正在进行中&#34;

2 个答案:

答案 0 :(得分:2)

只是一个错字。

此:

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

应该是这样的:

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

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

答案 1 :(得分:0)

我认为你可能对$scope.apply()的想法很接近。

如果您在“角度世界”中的不是的事件监听器内呼叫$scope.getNote(),例如您已绑定到&# 39;单击&#39;手动事件而不使用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();
  });
});

小提琴工作正常,因为ng-click指令在其内部触发了摘要。