根据保存记录修改模板



我有一个表单,并在我的路由器中处理提交代码。我的模板是这样的:

    {{#if isSaving}}
        Saving...
    {{else}}
    <form>
         inputs...
    </form>
    {{/if}}

我在路由器中保存的代码是这样的(ctrl是控制器):

events: {
    saveCompany: function(record, ctrl){
        if (!record.get('isDirty')) return;
        ctrl.set('isSaving', true);
        record.one('didUpdate', this, function() {
            ctrl.set('isSaving', false);
        });
        record.get('transaction').commit();
    },

当用户点击提交时,"Saving…"被正确显示,更新完成后隐藏。但我已经处理didCreate, diduupdate等在我的模型定义-通过显示一些弹出窗口,但我仍然希望能够防止用户摆弄我的表单,而数据被保存,这就是为什么我使用"record.one(…)"。用一种比我做的更"通用"的方式来做这件事,最好的方法是什么?

如果您的控制器是Ember.ObjectController,您已经透明地访问了content上的属性。如果content是您要观察的记录,那么您可以只观察控制器上的isSaving,而不需要任何额外的代码、绑定或其他东西。

最新更新