1

メソッドをオーバーライドする ember.js オブジェクトがあるcreateので、不明な構造の json をオブジェクトのコンテンツ変数に渡すことができます。

//model
App.Order = Ember.Object.extend({

  content: null,

  create: function(data) {
    this.set('content', data);
    return this._super();
  },

  getView: function() { 
    var self = this;
    return Ember.View.create({
      templateName: 'order-dialogue',
      classNames: ['card'],
      content: self.get('content'),
      name: 'house'
    });
  }

});

オブジェクトのビューを生成する機能がありますが、親オブジェクトのコンテンツにアクセスできません。試すたびに、self.get('content')が返されますnull

質問:

getView関数で生成されたビューは、親オブジェクトのコンテンツにどのようにアクセスできますか?

4

1 に答える 1

2

create メソッドをオーバーライドする ember.js オブジェクトがあるので、不明な構造の json をオブジェクトのコンテンツ変数に渡すことができます。

実際、オブジェクトは create メソッドをオーバーライドしていません。インスタンスで作成関数を定義しています。だからあなたが投稿したコードで、

var order = App.Order.create({test: true}); 
console.log(order.get('content')); // undefined

reopenClasscreate メソッドをオーバーライドするには、次のようにする必要があります。

App.Order.reopenClass({
  create: function(data) {
    order = this._super();
    order.set('content', data);
    return order;
  }
});

それが整ったら:

var order = App.Order.create({test: true}); 
console.log(order.get('content')); // {"test": true}

getView 関数で生成されたビューは、親オブジェクトのコンテンツにどのようにアクセスできますか?

まさにあなたがそれをコーディングした方法。ビューに問題はありません。実際には、親オブジェクトのコンテンツを返しています。親オブジェクトのコンテンツが期待どおりではないというだけです。

実際の例については、この jsbinを参照してください

于 2013-01-25T13:27:03.693 に答える