我有一个表单,并在我的路由器中处理提交代码。我的模板是这样的:
{{#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
,而不需要任何额外的代码、绑定或其他东西。