Javascript 绑定此文件以供以后在Ember中调用的方法
只是想知道当需要在外部范围中引用“this”时如何处理“稍后调用”。别名似乎不是一个良好的实践基础。我引述: 除了众所周知的call和apply用例之外, 始终首选.bind(this)或等效函数,用于创建 用于以后调用的BoundFunction定义。只能求助于 没有首选选项时的别名 那么,在余烬中有什么固执己见的方式吗?例如:Javascript 绑定此文件以供以后在Ember中调用的方法,javascript,ember.js,Javascript,Ember.js,只是想知道当需要在外部范围中引用“this”时如何处理“稍后调用”。别名似乎不是一个良好的实践基础。我引述: 除了众所周知的call和apply用例之外, 始终首选.bind(this)或等效函数,用于创建 用于以后调用的BoundFunction定义。只能求助于 没有首选选项时的别名 那么,在余烬中有什么固执己见的方式吗?例如: export default Ember.Route.extend({ model() { return new Ember.RSVP.Promise(f
export default Ember.Route.extend({
model() {
return new Ember.RSVP.Promise(function(resolve) {
Ember.run.later(function() {
resolve({ msg: 'Hold Your Horses' });
}, 3000);
});
},
setupController(controller, model) {
console.log(model.msg); // "Hold Your Horses"
}
});
如果,在Ember.run.later()
中,我想在使用此
进行解析后执行以下操作:
this.controllerFor("application").set("dataReady", true);
比如说
我想,使用别名,
应该是:
model() {
let that = this;
return new Ember.RSVP.Promise(function(resolve) {
Ember.run.later(function() {
that.controllerFor('application').set('dataReady', true);
resolve({ msg: 'Hold Your Horses' });
}, 3000);
});
},
但是更好的方法是什么?而不是使用别名来维护范围。按照这些思路应该可以做到:
model() {
return new Ember.RSVP.Promise((resolve) => {
Ember.run.later(this, function() {
this.controllerFor('application').set('dataReady', true);
resolve({ msg: 'Hold Your Horses' });
}, 3000);
});
},
请注意,传递给
Ember.run.later
的回调不需要是箭头函数,因为可以将其用作上下文。那么,为什么不使用bind(this)?不需要。只是想知道余烬是否有自己的方式。余烬是否为箭头功能提供浏览器支持?该链接称Safari和IE不支持箭头功能。