首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Angular-Xeditable的onBeforeSave / onAfterSave方法与多于$data的参数一起使用

如何将Angular-Xeditable的onBeforeSave / onAfterSave方法与多于$data的参数一起使用
EN

Stack Overflow用户
提问于 2014-05-02 08:07:58
回答 1查看 12.5K关注 0票数 9

当第一次在我的应用程序中使用Angular-Xeditable时,我遇到了一个问题,试图弄清楚如何保存对通过ng-repeat循环访问的对象所做的x可编辑更改。

该文档主要关注使用onbeforesave和onaftersave进行验证,虽然它确实显示了它可以用于保存内容,但示例并没有说明如何将$data (或$index)以外的任何内容传递给onbeforesave/onaftersave方法。示例展示了如何保存像$scope.person这样的内容,如果您只有一个项目,这是很好的。

但是如果列表中的第三个人是经过编辑的呢?你当然不想把它们都保存起来。如何只保存被编辑的对象,而不是保存数组中的所有内容?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-02 08:07:58

Angular-Xeditable文档并没有清楚地说明这一点,但是看起来$data (和$index)只是注入值,您可以向保存/验证方法传递几乎任何您想要的东西。所以你应该做的就是传递对象本身(或者仅仅传递它的id)。

给定以下标记:

代码语言:javascript
复制
<div ng-repeat="p in people">
    <a href="#" editable-text="p.name" onaftersave="updatePerson(p)">{{p.name}}</a>
</div>

然后,您的控制器中将包含以下代码:

代码语言:javascript
复制
$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值。你可以很容易地做这样的事情:

代码语言:javascript
复制
<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值仅更新person的name和dohickey字段。当然,您必须更改updatePerson()方法,以期望ID作为第一个参数,名称和dohickey作为第二个和第三个参数。

还要注意,如果像我在这里所做的那样,使用onBeforeSave而不是onAfterSave,那么p.name还没有新值,您需要返回到使用$data来获取新值。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23418753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档