0

だから私は単純な Ember オブジェクトだと思うものを持っています。

App.Playlist = Ember.Model.extend({
  _clips: [],
  clips: function() {
    var self = this;  
    if(this.get('clipIds')) {
      this.get('clipIds').forEach(function(id) {
        self.get('_clips').addObject({});
      }
    }
  }.property('clipIds')
});

問題は、例外が発生するまで、計算されたクリップ プロパティが無限に呼び出されることです。Uncaught RangeError: Maximum call stack size exceeded

4

2 に答える 2

1

レイ、これは別の方法で定義する必要があります。計算されたプロパティは関数のように定義され、Ember は、定義した依存関係の変更を観察すると、関数の呼び出しを処理します。

App.Playlist = Ember.Model.extend({
  myComputed: function () {
    return this.get('clipIds').map(function (id) {
      return Ember.Clip.create({id: id});
    });
  }.property('clipIds.@each'),
});

このコードは、「clipIds」と呼ばれるプロパティを監視し (それが何であれ)、clipIds の配列に基づいて Ember.Clip オブジェクトのリストを返します。

于 2013-06-03T19:14:28.707 に答える
0

それで、これが私が今のところこれを修正した方法です。計算されたプロパティが繰り返し呼び出される理由はまだわかりません。

App.Playlist = Ember.Model.extend({
  clips: [],
  loadClips: function() {
    var self = this;  
    if(this.get('clipIds')) {
      this.get('clipIds').forEach(function(id) {
        self.get('clips').addObject({});
      }
    }
  }.observes('clipIds.@each')
});
于 2013-06-03T19:27:44.343 に答える