0

おそらくこれを解決するために ArrayController + itemController のセットアップを使用するつもりですが、これはモデルレイヤー内で行う方がよいでしょう。

プロパティが空の場合に別の値を返すように、オブジェクトのプロパティをオーバーライドしたいと考えています。これはコードで説明するのが一番だと思います (jsfiddle: http://jsfiddle.net/ahx_/Tqw4C/2/ )。

App = Ember.Application.create()

App.Teacher = Ember.Object.extend()

App.Pupil = Ember.Object.extend({
  // TODO Add a property ('answer') that returns teacher.answer unless this.answer is defined
  // Pseudo-code:
  // answer: function(key, value) {
  //  if(Ember.isEmpty(this.answer)) {
  //   return this.get('teacher.answer')
  //  } else {
  //   return this.answer
  //  }
  // }.property('answer')
})

App.IndexController = Ember.Controller.extend({
  init: function() {
    this._super()
    teacher = App.Teacher.create({answer: 'correct'})
    this.set('pupil1', App.Pupil.create({ teacher: teacher, answer: 'incorrect' }))
    this.set('pupil2', App.Pupil.create({ teacher: teacher }))
  }
})
4

1 に答える 1

1

.property()それ自体を参照できないため、別のプロパティを追加する必要があります。

物体:

App.Pupil = Ember.Object.extend({
  answerToShow: function(){
    return this.get('answer') ? this.get('answer') : this.get('teacher.answer')
  }.property('answer')
})

テンプレート:

<script type="text/x-handlebars" data-template-name="index">
  Pupil1 ('incorrect'): {{pupil1.answerToShow}}
  <br>
  Pupil2 ('correct'): {{pupil2.answerToShow}}
</script>

デモ: http://jsfiddle.net/Tqw4C/5/

于 2013-05-04T09:20:43.913 に答える