我有大量屬性的模型,約20Ember.js:處理大量的屬性在模型
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}}
,但它不像這是可能的。
那麼,請你告訴我,有更好的辦法,它是什麼?
也許使用Ember.keys()可能是有用的,你http://emberjs.com/api/#method_keys –