当我想从在控制器动作如服务器获取一笔账:
account: false,
actions: {
// When the oAuth popup returns this method will be called
fetchUser: function(id)
{
// Get the account from the server
this.store.find('account', id).then(function(account)
{
this.set('account', account);
}, function(error)
{
console.log('error', error);
});
},
}
因为“这种”就行了引发错误this.set('account', account)
不再是控制器。 我怎么能现在设置“帐户”控制器从这一承诺回调中?
account: false,
actions: {
// When the oAuth popup returns this method will be called
fetchUser: function(id)
{
// Get the account from the server
this.store.find('account', id).then(function(account)
{
this.set('account', account);
}.bind(this), function(error)
{
console.log('error', error);
});
},
}
修复! 加入.bind(本):-)
这不是EmberJS这样做,这只是作用域的Javascript工作的方式。
在this
关键字的范围是使用它的功能。
这里有一个链接,这将有助于您了解这个..
http://javascriptplayground.com/blog/2012/04/javascript-variable-scope-this/
我也建议看JavaScript的克罗克福德的影片,他解释说这和你想做什么解决办法。
下面是他的视频的链接..
http://yuiblog.com/crockford/
一个解决方案是使用典型
var self = this;
在进入改变的范围的功能this
和使用self
,而不是this
从函数中。
self.set('account', account);