2014-01-24 192 views
0

我將嘗試用示例解釋問題。例如被簡化,所以它不是很合乎邏輯,但不管怎麼說..AngularJS - 父範圍未更新

比方說,我有這樣的看法

<div ng-app="TestApp" ng-controller="MyController"> 
    <button ng-add-item="items">Add Item</button> 
    <ul> 
     <li ng-repeat="item in items">{{item.name}} <button ng-change-item="item">Change item</button></li> 
    </ul> 
</div> 

而且我有兩個指令:

1)ngAddItem - 它增加了虛擬物品(之後點擊)

2)ngUpdateItem - 這改變項目(點擊後)

的問題是:1)的偉大工程,但第二 - 不..

http://jsfiddle.net/pbmnL/2/

P.S.我知道我可以在這個例子中使用ng-click和許多其他的東西。這只是簡單的例子。

感謝幫助..

UPDATE:如果我改變只是一個名稱屬性一切正常! http://jsfiddle.net/pbmnL/4/

但在實際例子中,我還需要改變整個對象..

+0

'項目'列表沒有改變。所以,由於它具有不同的範圍,因此您必須更新列表本身才能在視圖中進行更改。 – Beterraba

回答

0

您的代碼不會與這條線,因爲工作:

_item = _changed_item; 

您只需將本地變量_item指向另一個對象,但不會更新列表中的項目。

作爲一種解決方案,您可以使用angular.copy - 它將一個對象的所有屬性替換爲另一個對象的屬性。

angular.copy(_changed_item, _item); 

這是jsfiddle that works

0

這樣做:

$element.bind('click', function() { 
    $scope.$parent.item.name = 'changed name'; 
    $scope.$apply(); 
});