Ember.js:处理模型中的大量属性

Ember.js:处理模型中的大量属性,ember.js,handlebars.js,Ember.js,Handlebars.js,我有一个拥有大量房产的模型,大约20套 App.Foo = Ember.Object.extend({ foo01: null, foo02: null, ... foo20: null 因为我需要区分null和“的值,所以我还具有以下所有属性: isFoo01Set: function() { return foo01 !== null; }.property('foo01'), isFoo02Set: function() { return foo02 !== nu

我有一个拥有大量房产的模型,大约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

显然,我一定是做错了什么事。但是我发现由于
把手
的限制(根据设计),我不能在模板中做任何事情

我想要这样的东西:

{{# each property in obj}}
  <a {{action set obj property}}>Set {{property}}</a>
{{/each}}
{{{#obj中的每个属性}
集合{{property}
{{/每个}}
但这看起来不可能


所以,请告诉我有更好的方法,它是什么?

我将给出一个模糊的想法…希望这能有所帮助

App.Foo = Ember.Object.create({
  name: "",
  presence: function(){
    return this.get('name')!==null;
  }.property('name'),
  setFoo: function(){
    this.set('name', "");
  },
  unsetFoo: function(){
    this.set('name', null);
  }
})

App.fooArray = []
for(var i=0;i<=5;i++){
  App.fooArray.pushObject(App.Foo.create({name:"foo"+i}));
}

{{#each element in App.fooArray}}
  <a {{action element.unsetFoo}} href="#">un-set {{element.name}}</a>
  <a {{action element.setFoo}} href="#">Set {{element.name}}</a>
{{/each}}
App.Foo=Ember.Object.create({
姓名:“,
存在:函数(){
返回此。get('name')!==null;
}.property(“名称”),
setFoo:function(){
this.set('name',“”);
},
unset-foo:function(){
this.set('name',null);
}
})
App.fooArray=[]

for(var i=0;使用Ember.keys()的iPerhaps可能对您很有用,正如我所说:“请注意,在我的实际案例中,实际的名称不是foo01..20,而是彼此不同的有意义的名称。”所以它们是像
名字
姓氏
年龄
ssn
,等等。不动产名称,而不是数字在01到20之间。好的,在这种情况下,有一个数组nameArray=[“名字”,“姓氏”,“年龄”…],然后是App.Foo.create({name:nameArray[i]})…明白了吗?这对我设置/取消设置所有这些不同属性的操作有什么帮助?我似乎不理解你的问题,也许你能提出一个问题吗?这里每个对象都有自己的设置和取消设置方法,这些方法将在其相应的单击操作上执行…这不是你想要的吗?上下文绑定到要素