Ember在ajax调用中保存表单

时间:2014-02-12 13:17:38

标签: ajax ember.js

我的编辑表格中包含了我的所有信息,当我点击保存按钮时,即使没有任何变化,也可以保存所有字段。

我想在对象中只返回我在表单中修改的索引及其值。 我非常不清楚如何用Ember做到这一点。

这是我的代码:

App.EnquiryUpdateController = Ember.ObjectController.extend({
id: null,
isSaved: false,

actions: {
    save: function() {
        var enquiry = this.get('model');
        console.log(enquiry);
        var obj = JSON.parse(JSON.stringify(enquiry));
        obj = this.cleanObject(obj);
        $.ajax({
            url: host + 'mdf/enquiry/' + enquiry.id,
            type: 'POST',
            accepts: 'application/json',
            data: obj
        });
        this.transitionToRoute('enquiry', enquiry)
    }
},
});

我的路线:

App.EnquiryUpdateRoute = Ember.Route.extend({
    model: function() {
        return this.modelFor('enquiry');
    }
});

我的模板:

<script type="text/x-handlebars" data-template-name="enquiry/update">

    <div class="enquiry-update">
        {{#if isSaved}}
        <div class="saved">Enquiry updated successfully</div>
        {{/if}}
        <div>
            <label>Customer Name</label>
            {{input value=customerName}}
        </div>

        <div>
            <label>Customer Email</label>
            {{input value=customerEmail}}
        </div>

        <div>
            <label>Customer Phone</label>
            {{input value=customerPhone}}
        </div>
        <div>
            <button {{action "save"}}>Save</button>
        </div>
    </div>
</script>

如果我更新customerName,我只想将它放在我的对象{customerName:“toto”}而不是所有这些..

谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,您要实现的概念将是脏属性检查。这意味着您需要保留原始数据的副本,然后将属性标记为脏,或者比较属性并仅发送不同的属性。