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

要覆盖 create 方法,您需要reopenClass这样:

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 回答