我将尝试用示例解释问题。示例是简化的,所以它不是很合乎逻辑,但无论如何......
假设我有这样的观点
<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)效果很好,但第二 - 不是..
P.S。我知道在这个例子中我可以使用ng-click和许多其他东西。这只是简化的例子。
感谢您的帮助!..
更新:如果我只更改名称属性一切正常! http://jsfiddle.net/pbmnL/4/
但在实际例子中,我仍然需要更改整个对象..
答案 0 :(得分:0)
这样做:
$element.bind('click', function () {
$scope.$parent.item.name = 'changed name';
$scope.$apply();
});
答案 1 :(得分:0)
您的代码无效,因为这行:
_item = _changed_item;
您只需将本地变量_item指向另一个对象,但不要更新列表中的项目。
作为一种解决方案,您可以使用angular.copy - 它将一个对象的所有属性替换为另一个对象的属性。
angular.copy(_changed_item, _item);