刚开始学习ember.js,目前正在从其指南开始学习TODO MVC。我目前在这一步:http://emberjs.com/guides/getting-started/show-when-all-todos-are-complete/输入类型='复选框'双向绑定不起作用?
我注意到如果我钩住“checked”属性到一个计算属性,双向绑定不工作,因为我会预期的。如果我手动选中/取消选中该复选框,该计算属性将不会更新该值。
这里是简化的示例(好象他们的实例是不够简单):
这里是车把代码。我只加了“{{allAreDone}}”元素只是为了能够看到价值实时:
//...
<section id="main">
{{outlet}}
{{input type="checkbox" id="toggle-all" checked=allAreDone}}
{{allAreDone}}
</section>
//...
这里是JS代码段的控制器,但我简化它,使得它不是基于另一个属性:
// ...
allAreDone: function(key, value) {
return false
}.property()
// ...
现在,如果我检查框(即属性'checked'= true),'allAreDone'仍然会显示错误。如果输入类型是文本,结果将会不同。双向绑定复选框也将工作,如果它连接到一个非计算属性,例如:
// ...
allAreDone: false
//will return false if I uncheked the checkbox directly and vice versa
// ...
我只是想确认一下我的行为的理解是正确的。为什么它与“文本”类型不同?
谢谢!
你需要一个'.property( '_ allAreDone')'在端部和用于'_allAreDone'等的初始值,从而http://emberjs.jsbin.com/xubuja/1/edit?html,js,console,输出 – Kalman
确实!谢谢。 –
谢谢。早些时候,我认为文字会有不同的表现。但是,我再次尝试后,它看起来与复选框一致。 – ShadyStego