javascript - Ember.js 组件 didRender 变量范围

标签 javascript ember.js

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

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

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

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

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

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

最佳答案

如果你想在加载 DOM 后执行某些操作,你应该使用 didInsertElement 钩子(Hook)。

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

请像这样更改:

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

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

关于javascript - Ember.js 组件 didRender 变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39134448/

相关文章:

jquery - 在 Ember 中保留滚动位置

ember.js - Ember subview 表不起作用未捕获类型错误 : Cannot read property 'nextSibling' of null

ember.js - 如何在 Ember View 中根据 ID 以外的属性查找个人记录

javascript - Ember Octane 和 JQuery

javascript - 带有 jQ​​uery 和 nth-child 的下拉菜单

javascript - Ember 和 Require.JS 优化器 "Error: Could not find module jquery"

ember.js - 如何访问 Controller 的.profile中的环境变量?

javascript - 用于在聊天中标记玩家的正则表达式

javascript - Bootstrap 示例 Carousel 代码不切换幻灯片

c# - 从 Web 应用程序打印到客户端打印机