我在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: {}
}]
});
}
});
这是什么'真的代表什么?
答案 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);