Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 绑定此文件以供以后在Ember中调用的方法_Javascript_Ember.js - Fatal编程技术网

Javascript 绑定此文件以供以后在Ember中调用的方法

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

只是想知道当需要在外部范围中引用“this”时如何处理“稍后调用”。别名似乎不是一个良好的实践基础。我引述:

除了众所周知的call和apply用例之外, 始终首选.bind(this)或等效函数,用于创建 用于以后调用的BoundFunction定义。只能求助于 没有首选选项时的别名

那么,在余烬中有什么固执己见的方式吗?例如:

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不支持箭头功能。