新的余烬,这是非常愚蠢但我浪费了我的一天。
我在我的控制器中创建了一个对象数组,我在视图中用来构建单选按钮。
单击该按钮时,我想切换收音机输入上的单击属性,以便单击该按钮。非常简单,但Ember不断给我留下错误。
这是我的代码(编辑了一些拼写错误):
IndexController = Ember.ObjectController.extend({
radioArray : function () {
var a = [], i = 0;
while (a.push({ index: i++, clicked: false }), i <= 10);
return a;
}.property('radioArray'),
actions : {
assignClick : function (item, index) {
this.toggleProperty(item.clicked);
// some unrelated business logic here
}
}
});
这可以解决:
{{#each radioArray}}
<label {{action "assignClick" this index}}>
<input type="radio" {{bind-attr value=index checked=clicked}} /> foo
</label>
{{/each}}
我想要的只是显示单击了正确的单选按钮。但是当我尝试在我的ctrl中设置clicked to true时,我得到&#34; Uncaught Error:Assertion Failed:无法使用false键调用get。&#34;
答案 0 :(得分:0)
如果您尝试使用Em.Object.toggleProperty
,则需要Em.Object
。 :)
有Em.get
和Em.set
等函数可用于ember和非ember对象,但非ember对象没有函数Em.toggleProperty
。
但是,您可以将Em.set与Em.get一起使用来实现切换行为:
Em.set(item, 'clicked', !Em.get(item, 'clicked'));
P.S。从财产本身设置财产依赖性是没有意义的。 (我正在谈论radioArray : function () {...}.property('radioArray')
)。
P.P.S。工作示例:http://emberjs.jsbin.com/memuwi/2/edit?html,js,output