Mic*_*ryl 9 javascript angularjs x-editable
首次在我的应用程序中使用Angular-Xeditable时,我遇到了一个问题,试图弄清楚如何将x可编辑的更改保存到通过ng-repeat循环访问的对象.
该文档主要侧重于使用onbeforesave和onaftersave进行验证,虽然它确实表明它可用于保存内容,但这些示例并没有显示如何将超过$ data(或$ index)的内容传递给onbeforesave/onaftersave方法.样本显示保存类似$ scope.person,如果你有一个项目,这很好.
但如果30个列表中的第3个人被编辑怎么办?你当然不想要全部保存它们.如何只保存编辑的对象而不是数组中的所有内容?
Mic*_*ryl 15
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>
Run Code Online (Sandbox Code Playgroud)
然后,您的控制器中将包含以下代码:
$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;
}
Run Code Online (Sandbox Code Playgroud)
有了这个,您可以随意处理保存.您不必仅使用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>
Run Code Online (Sandbox Code Playgroud)
并仅更新具有提供的ID值的人员的名称和dohickey字段.当然,您必须更改updatePerson()方法,而不是将ID作为第一个参数,将名称和dohickey作为第2和第3个参数.
另请注意,如果您使用onBeforeSave而不是onAfterSave,那么p.name将不具有新值,您需要返回使用$ data来获取新值.
| 归档时间: |
|
| 查看次数: |
11782 次 |
| 最近记录: |