Angular-Xeditable 文档并没有说得很清楚,但似乎 $data(和 $index)只是注入值,您可以将几乎任何您想要的东西传递给 save/validate 方法。所以你应该做的是传递对象本身(或者只是它的 id)。
给定以下标记:
<div ng-repeat="p in people">
<a href="#" editable-text="p.name" onaftersave="updatePerson(p)">{{p.name}}</a>
</div>
然后,您的控制器中将包含以下代码:
$scope.updatePerson = function(person) {
var ret = PersonService.save(person); // or whatever save mechanism you use
// You need to return a error string if save fails, true otherwise
if (ret !== null) { // You have to make sure this logic works for your save service
return ret;
}
return true;
}
有了这个,你可以随心所欲地处理保存。您不必只使用 Angular-Xeditable 提供的 $data 或 $index 值。你可以很容易地做这样的事情:
<div ng-repeat="p in people">
<a href="#" editable-text="p.name" onaftersave="updatePerson(p.id, p.name, p.dohickey)">{{p.name}}</a>
</div>
并且仅更新具有提供的 ID 值的人员的姓名和 dohickey 字段。当然,您必须更改 updatePerson() 方法,以将 ID 作为第一个参数,将 name 和 dohickey 作为第二个和第三个参数。
另外请注意,如果您像我在这里所做的那样使用 onBeforeSave 而不是 onAfterSave,p.name 还没有新值,您需要返回使用 $data 来获取新值。