1

我正在尝试使用bootstrap-switchEmberJS 中的不同库。

我添加了以下内容.on('didInsertElement')

$(toggleTag).on('switchChange.bootstrapSwitch', function(event, state) {
      this.sendAction('updateAction', state);
});

但是,当调用此事件时,this将返回objecthtml 元素的上下文toggleTag。相反,我需要访问componentfor this

处理此问题的推荐方法是什么?

4

1 回答 1

1

在 ES6 中使用粗箭头并继承父级的上下文(如果您使用的是 ember-cli,建议这样做):

$(toggleTag).on('switchChange.bootstrapSwitch', (event, state) => {
  this.sendAction('updateAction', state);
});

在 ES5 中,要么使用bind来修复函数上下文:

$(toggleTag).on('switchChange.bootstrapSwitch', function(event, state){
  this.sendAction('updateAction', state);
}.bind(this));

或保存上下文:

var that = this;
$(toggleTag).on('switchChange.bootstrapSwitch', function(event, state){
  that.sendAction('updateAction', state);
});
于 2015-08-10T21:15:18.463 回答