3

約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}}

しかし、これは可能ではないようです。

では、もっと良い方法があれば教えてください。

4

1 に答える 1

0

漠然とした考えを述べます...これが役に立てば幸いです

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}}
于 2012-09-25T10:45:21.410 に答える