javascript - 从 ember 组件引用全局库

标签 javascript ember.js

我正在使用ember-remarkable因为我想在我的项目中添加 markdown 解析和语法突出显示。它唯一缺少的是行号,我想通过使用这个库来添加行号:highlightjs-line-numbers.js

我使用以下内容覆盖 ember-remarkablemd-text 组件:

import MDTextComponent from 'ember-remarkable/components/md-text';

export default MDTextComponent.extend({
  tagName: null,

  didRender() {
    this._super(...arguments);

    this.$("code[class*='language-']").each((i, block) => {
      this.$(block).addClass('hljs');
      hljs.lineNumbersBlock(block);
    });
  }
});

一切正常!但是,我的编辑提示 hljs 未定义,即使它在页面上可用。

如何避免此错误?

最佳答案

如果是ES6模块,导入即可。否则,您可以将其用作 window.hljs

当你在浏览器中运行js代码时,window是全局变量的根。因此您可以通过 window.hljs 访问它。

如果您在 Fastboot 中运行代码,这应该是访问全局对象的更好方法:(window || Fastboot || global).hljs

另一方面,您可以阻止 linter 给出此错误,而不是使用全局对象容器。对于 eslint,请参阅此配置:Specifying Globals .

关于javascript - 从 ember 组件引用全局库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47423401/

相关文章:

javascript - 使用动态创建的文件输入字段进行 Jquery 文件验证

javascript - 从数字生成公钥

javascript - 使用 php echo 定义一个 javascript var

javascript - 为什么 didTransition 不调用我的 jquery?

javascript - 如何在 ember 中更改不同页面的正文背景

javascript - 在 Ember Handlebars 模板中呈现已解决的 promise 值

javascript - 当用户向下滚动时,如何使侧边栏停在特定的 div 处?

javascript - 如何检查鼠标在元素上停留了一些秒

javascript - 容器 View : limitations when dynamically adding views

javascript - 如何在 Ember.js 中测试组件方法?