如何在EmberJS应用程序中使用Jitsi Meet

在我的Ember应用程序中,我使用了我安装的ember-inject-script:

npm install --save-dev ember-inject-script 

我的页面的controller.js文件如下所示:

 import Ember from 'ember'; import injectScript from 'ember-inject-script'; export default Ember.Controller.extend({ init: function() { this._super(); var url = "https://meet.jit.si/external_api.js"; injectScript(url); var domain = "meet.jit.si"; var room = "JitsiMeetAPIExample"; var width = 700; var height = 700; var htmlElement = document.querySelector('#meet'); var api = new JitsiMeetExternalAPI(domain, room, width, height, htmlElement); } }); 

模板是这样的:

 <h2>Jitsi Meet</h2> <div id="meet"></div> {{outlet}} 

但是我得到一个控制台错误:

处理路由时出错: projects.index JitsiMeetExternalAPI未定义ReferenceError:JitsiMeetExternalAPI未定义

  • injectScript在asynchronous,所以你不能使用JitsiMeetExternalAPI非常接下来的语句。 你需要使用。

  • 另一个问题是,您正在访问控制器init方法中的DOM元素,该元素将不可用。 通常控制器不是DOM感知的。 为此,我会鼓励你编写Component并使用didInsertElement钩子

另一种在所需时间加载js的替代方法是在路由模式挂接之前,您可以使用Ember。$。getJSON(url)。

 beforeModel(){ return Ember.$.getJSON(url); }