2014-09-24 49 views
-1

内更新范围VAR在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的。但是当我打电话给getNote()时,我希望它会改变为Eric,而不是。我究竟做错了什么?

我试着添加$ scope.apply();在$ scope.history.drive =“Eric”后面;但后来我得到一个“错误:$申请正在进行中”

+0

我终于通过小提琴在这里工作http://jsfiddle.net/u67kov5e/ 现在我有另一个直接相关的问题,在iOS不能获得对象属性。 http://stackoverflow.com/questions/26024488/get-object-value-by-property-reference-not-working-on-ios – GravyPlaya 2014-09-24 23:45:28

回答

2

只是一个错字。

此:

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

应该是这样的:

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

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

+0

你的权利多数民众赞成如何是最初的。输入示例中的错字。更新了这个例子。 – GravyPlaya 2014-09-24 21:38:33

+0

哦。控制器代码很好。你打电话过得怎么样? – Antiga 2014-09-24 21:40:03

+0

来自同一个控制器中的另一个功能,就像点击按钮一样。我直接调用$ scope.getNote()。 – GravyPlaya 2014-09-24 21:42:21

0

我想你可能是用接近你的思想约$scope.apply()

如果您呼叫$scope.getNote()事件监听器是不是在“角世界里面,比如你已经绑定到“click”事件手动,而不使用ng-click,那么你将需要触发摘要当你调用$scope.getNote()

最好的方式做到这一点,像这样:因为ng-click指令触发摘要在其内部

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

小提琴工作正常。