我有一个具有大量属性的模型,大约 20 个。
App.Foo = Ember.Object.extend({
foo01: null,
foo02: null,
...
foo20: null
因为我需要区分 和 的值null
,""
所以我还拥有所有这些属性:
isFoo01Set: function() { return foo01 !== null; }.property('foo01'),
isFoo02Set: function() { return foo02 !== null; }.property('foo02'),
...
isFoo20Set: function() { return foo01 !== null; }.property('foo20')
请注意,在我的实际案例中,实际名称不是foo01..20
,而是彼此不同的有意义的名称。
然后我需要有一大堆动作来设置/取消设置所有这些属性。
在我的路由器中:
setFoo01: function(router, instance) {
router.get('myController').setFoo01(instance.context);
},
unsetFoo01: function(router, instance) {
router.get('myController').unsetFoo01(instance.context);
},
以此类推,直到foo20
。然后在我的控制器中:
setFoo01: function(obj) {
obj.set('foo01', '');
},
unsetFoo01: function(obj) {
obj.set('foo01', null);
依此类推,直到foo20
。
显然我一定做错了什么。但我发现由于handlebars
限制(按设计),我不能在模板中做任何事情。
我想要这样的东西:
{{# each property in obj}}
<a {{action set obj property}}>Set {{property}}</a>
{{/each}}
但看起来这不可能。
所以,拜托,你能告诉我有更好的方法吗?它是什么?