2014-09-24 48 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(); 
    }); 
}); 

小提琴工作正常。