什么是'这个'真的代表emberJS框架?

时间:2016-08-26 08:26:07

标签: javascript ember.js

我在emberJS中真的很新,我看到很多这个。'在官方指南中。 在ember Object模型中我知道这个。'表示对象本身,例如:

 var obj = Ember.Object.extend({
  baz: {
    foo: 'BLAMMO',
    bar: 'BLAZORZ'
  },

  something: Ember.computed('baz.{foo,bar}', function() {
    return this.get('baz.foo') + ' ' + this.get('baz.bar');
  })
});

这意味着obj本身,但在其他情况下,如下面的模型:

export default Ember.Route.extend({
  model() {
    this.store.push({
      data: [{
        id: 1,
        type: 'album',
        attributes: {
          title: 'Fewer Moving Parts',
          artist: 'David Bazan',
          songCount: 10
        },
        relationships: {}
      }, {
        id: 2,
        type: 'album',
        attributes: {
          title: 'Calgary b/w I Can\'t Make You Love Me/Nick Of Time',
          artist: 'Bon Iver',
          songCount: 2
        },
        relationships: {}
      }]
    });
  }
});

这是什么'真的代表什么?

3 个答案:

答案 0 :(得分:2)

this完全取决于调用函数或创建对象的位置,内容和方式。 this的值是javascript本身的结构而不是ember。我强烈建议您在javascript中阅读有关this的更多信息。它是成为一名优秀的JavaScript开发人员的基础。

以下是一些帮助我的好资源:

对于原始问题中的代码,Ember中的绝大多数对象都扩展了基础ember对象,Route也不例外。因此,在较低的代码块中,this指的是定义model()函数的路由对象。

答案 1 :(得分:0)

Ember试图在几乎所有情况下总是给出一个这个当前对象。在动作中它也是普通对象,对于计算属性,观察者等也是如此。

我认为唯一完全不同的是路由器DSL。

因此,在您的示例中,this是当前对象。在第二个中,您只能调用this.store,因为商店已注入路线。

答案 2 :(得分:0)

就像xcskier提到的那样,这取决于你所处的环境。为什么不检查你的"这个"做一些像

这样的事情
console.log(this);