在Ember.js内扩展对象控制器中断

时间:2014-12-07 00:05:59

标签: ember.js

我目前正在使用Ember.js中的对象模型。我真的很喜欢它,但有一件事让我感到困惑。

这有效(http://emberjs.jsbin.com/jepazo/1/edit?html,css,js,console,output):

App.Car = Ember.Object.extend({   
      color: 'red',   
      brand: "Tesla",   
      desciption: function(){
           return this.get('color') + this.get('brand');   
      }.property('color','brand') 
})


App.IndexController = Ember.Controller.extend({   
   zl: [App.Car.create(), App.Car.create({brand: 'BMW'})] 
})

但我无法在控制器(http://emberjs.jsbin.com/jepazo/2/edit?html,css,js,console,output)上声明它:

App.IndexController = Ember.Controller.extend({
  car: Ember.Object.extend({
      color: 'red',
      brand: "Tesla",
      desciption: function(){
         return this.get('color') + this.get('brand');
      }.property('color','brand')
  }),
  zl: [this.get('car').create(), this.get('car').create({brand: 'BMW'})]
)};

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:3)

这是因为数组声明中的“this”是Window对象。

如果将zl转换为返回数组的computedProperty,它将起作用。

类似的东西:

zl: function() {
      return [this.get('car').create(), this.get('car').create({ brand: 'BMW'})];
    }.property()

这是一个说明问题的jsbin:

http://emberjs.jsbin.com/fudiruduxa/1/edit?html,css,js,output