Ember.js组件didRender变量范围

时间:2016-08-24 23:22:48

标签: javascript ember.js

我正在使用Ember组件的didRender()钩子来实现一些需要在加载DOM后运行的javascript。例如:

didRender() {
  var signaturePad = new SignaturePad($("#sigElement"));
  signaturePad.clear();
}

这很好用。但是,我需要从同一组件中的操作中访问signaturePad变量,以使按钮正常工作。如:

actions: {
   clearSignature: function() {
     signaturePad.clear();
   }
}

不幸的是,似乎我在组件的didRender()钩子中定义的变量没有传递给actions

如何从同一组件中的操作中访问此变量?

1 个答案:

答案 0 :(得分:2)

如果你想在加载DOM之后做一些事情,你应该使用didInsertElement hook。

创建变量并不会将其设置为在其他情况下使用的属性。

请改变如下:

didInsertElement() {
  var signaturePad = new SignaturePad($("#sigElement"));
  signaturePad.clear();
  this.set('signaturePad', signaturePad);
}

actions: {
   clearSignature: function() {
     this.get('signaturePad').clear();
   }
}