0

頭をかいてしまう奇妙なバグがあります。

入力するたびにコントローラーを新しくする Ember.State があります。

  show: Ember.State.extend({
    enter: function(manager, transition) {
      this._super(manager, transition);

      var contact = App.store.find(App.Contact, App.appController.get('params'));

      App.set('selectedContactController', App.SelectedContactController.create({}));

      //TODO: Why do I have to do this when I have just called create?
      if(App.getPath('selectedContactController.content') && App.getPath('selectedContactController.content.length') > 0){
        App.setPath('selectedContactController.content', Ember.A());
      }

コードの別の部分では、データ ストアから読み込まれる配列にコントローラーのコンテンツを設定します。

この質問を書いている行の上にコメントを入れました。create を呼び出しても、コンテンツ コレクションをクリアする必要があります。これは私を混乱させました。

SelectedContactController は次のようになります。

App.SelectedContactController = Ember.ArrayProxy.extend(App.FeedScroller, { 

content プロパティは、次のような App.FeedScroller mixin から取得されます。

App.FeedScroller = Ember.Mixin.create(Ember.Evented, {
  content: Ember.A(),

create({}) が呼び出されたときに content プロパティが破棄されない理由を知っている人はいますか?

4

1 に答える 1

0

これを行う場合:

App.SelectedContactController.create({})

デフォルトのプロパティを引き続き継承しており、その一部はプロトタイプ チェーンの mixin から取得されます。

作成するインスタンスでこれらのデフォルト プロパティが必要ない場合は、明示的にnullとして渡す必要があります。

App.SelectedContactController.create({content:null})

この jsFiddle を見てみましょう: http://jsfiddle.net/lifeinafolder/ag2Nb/

お役に立てれば。

于 2012-07-13T06:18:19.247 に答える