我有一个复选框,需要在更改值后立即保存到数据库。它受数据元素审计的约束。这是模板中的复选框:
{{view Site.ReleaseChecklistToggleView checkedBinding="audit" contentBinding="this" placeholder="#"}}
以下是Site.ReleaseChecklistToggleView
定义为:
Site.ReleaseChecklistToggleView = Em.Checkbox.extend(
change: (e)->
this.content.save()
)
在调用更改之前,似乎未设置审计。它将audit
变量null
传递给数据库,但如果我在console.log(this.content.audit)
方法中change
,则会告诉我true
的正确值或false
。我唯一的结论是,在更改方法运行之前,它不会更新ember模型。
有什么建议吗?我使用了错误的方法吗?
答案 0 :(得分:1)
尝试以下方法:
Site.ReleaseChecklistToggleView = Em.Checkbox.extend(
valueChanged: ->
@get("content").save()
.observes("checked"))
答案 1 :(得分:0)
查看Todo应用程序的Ember指南(http://emberjs.com/guides/getting-started/marking-a-model-as-complete-incomplete/)。通过以下方式,我能够通过复选框自动保存特定属性。
如果链接不再有效,这就是他们这样做的方式......
车把
<!--- ... additional lines truncated for brevity ... -->
{{#each itemController="todo"}}
<li {{bind-attr class="isCompleted:completed"}}>
{{input type="checkbox" checked=isCompleted class="toggle"}}
<label>{{title}}</label><button class="destroy"></button>
</li>
{{/each}}
<!--- ... additional lines truncated for brevity ... -->
控制器
Todos.TodoController = Ember.ObjectController.extend({
isCompleted: function(key, value){
var model = this.get('model');
if (value === undefined) {
// property being used as a getter
return model.get('isCompleted');
} else {
// property being used as a setter
model.set('isCompleted', value);
model.save();
return value;
}
}.property('model.isCompleted')
});