Ember 控制器设置 属性 正在运行
Ember controller set property in action
ember 的新手,这是超级愚蠢的,但我已经浪费了我的一天。
我正在我的控制器中创建一个对象数组,我用它来在我的视图中构建单选按钮。
单击按钮时,我想切换单选输入上的 clicked 属性,使其显示为已单击。非常简单,但是 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 设置为 true 时,我得到 "Uncaught Error: Assertion Failed: Cannot call get with false key."
如果您尝试使用 Em.Object.toggleProperty
,那么您需要 Em.Object
。 :)
有 Em.get
和 Em.set
等函数,您可以将它们用于 ember 和非 ember 对象,但没有函数 Em.toggleProperty
用于非 ember 对象ember 个对象。
但是,您可以使用 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
ember 的新手,这是超级愚蠢的,但我已经浪费了我的一天。
我正在我的控制器中创建一个对象数组,我用它来在我的视图中构建单选按钮。
单击按钮时,我想切换单选输入上的 clicked 属性,使其显示为已单击。非常简单,但是 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 设置为 true 时,我得到 "Uncaught Error: Assertion Failed: Cannot call get with false key."
如果您尝试使用 Em.Object.toggleProperty
,那么您需要 Em.Object
。 :)
有 Em.get
和 Em.set
等函数,您可以将它们用于 ember 和非 ember 对象,但没有函数 Em.toggleProperty
用于非 ember 对象ember 个对象。
但是,您可以使用 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