简体   繁体   English

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

[英]How do I use Jitsi Meet in an EmberJS app

In my Ember app I'm using ember-inject-script which I installed: 在我的Ember应用程序中,我使用的是我安装的ember-inject-script:

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

The controller.js file for my page looks like this: 我的页面的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);
  }
});

The Template is this: 模板是这样的:

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

Yet I get a console error: 但我得到一个控制台错误:

Error while processing route: projects.index JitsiMeetExternalAPI is not defined ReferenceError: JitsiMeetExternalAPI is not defined 处理路径时出错: projects.index未定义JitsiMeetExternalAPI ReferenceError:未定义JitsiMeetExternalAPI

  • injectScript in asynchronous so you can't use JitsiMeetExternalAPI very next statement. injectScript异步,所以你不能使用JitsiMeetExternalAPI第二天发言。 You need to use then . 您需要使用then

  • Another issue is, you are accessing the DOM element in controller init method, which will not be available. 另一个问题是,您正在访问控制器init方法中的DOM元素,该方法将不可用。 generally controller is not DOM aware. 通常控制器不是DOM感知的。 for this I will encourage you to write Component and use didInsertElement hook 为此,我将鼓励您编写Component并使用didInsertElement钩子

One more alternative approach to load js at the required time, is in routes beforeModel hook, you can just use Ember.$.getJSON(url). 另一种在所需时间加载js的替代方法是在beforeModel hook之前的路由中,你可以使用Ember。$。getJSON(url)。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM