Javascript jQuery插件到Ember组件中

Javascript jQuery插件到Ember组件中,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,我正在尝试将这个jQuery插件转换成一个Ember组件 import Ember from 'ember'; export default Ember.Component.extend({ tagName : "input", type : "text", attributeBindings : [ "name", "type", "value", "id"], _initialize: function() { Ember.assert("Tags Input has to

我正在尝试将这个jQuery插件转换成一个Ember组件

import Ember from 'ember';

export default Ember.Component.extend({

tagName : "input",
type : "text",
attributeBindings : [ "name", "type", "value", "id"],

_initialize: function() {

    Ember.assert("Tags Input has to exist on Ember.$.fn.tagsInput", typeof Ember.$.fn.tagsInput === "function");

    this.$('#tags').tagsInput({'width':'100px'});

}.on('didInsertElement')
});
然后在我的车把文件
{{tag input id=“tags”}}

但是jQuery似乎不起作用,因为它只是一个标准的输入框。这是生成的HTML

但是如果我复制
这个.$('#tags').tagsInput({'width':'100px'})编码到控制台并运行它。元素使用插件


插件不会在didInsertElement上被触发的原因是什么?

您的问题是
这个。$(“#标记”)
在您的组件DOM元素中搜索id为:标记的DOM元素

要解决您的问题,您应该使用
this.$().tagsInput({..})


另请参见工作示例。

您的问题是
此。$(“#标记”)
在组件DOM元素中搜索id为:标记的DOM元素

要解决您的问题,您应该使用
this.$().tagsInput({..})

另请参见工作示例。

除上述内容外,您可能需要通过将代码调度到运行循环中的
afterRender
队列,将此调度到完全渲染后,如下所示:

_initialize: function({
  Ember.run.scheduleOnce('afterRender', this, function() {
    this.$().tagsInput({'width': '100px'});
  });
}).on('didInsertElement')
Ember.run
是一个稍微复杂的主题,但本质上,事情是在Ember触发的“队列”中按顺序发生的,而
afterRender
队列是在渲染所有内容之后发生的队列

这里是,这里是。

除了上面所说的,您可能需要通过将代码调度到运行循环中的
afterRender
队列,将此调度到完全渲染后,如下所示:

_initialize: function({
  Ember.run.scheduleOnce('afterRender', this, function() {
    this.$().tagsInput({'width': '100px'});
  });
}).on('didInsertElement')
Ember.run
是一个稍微复杂的主题,但本质上,事情是在Ember触发的“队列”中按顺序发生的,而
afterRender
队列是在渲染所有内容之后发生的队列


这里是,这里是。

将setup jquery代码添加到component.js中,如下所示:

import Ember from 'ember';

export default Ember.Component.extend({

tagName : "input",
type : "text",
attributeBindings : [ "name", "type", "value", "id"],

setupTagsInputPlugin: Ember.on('didRender', function() {
    this.$("#tags").tagsInput({
width:"100px"
    });
  }),

});

将setup jquery代码添加到component.js中,如下所示:

import Ember from 'ember';

export default Ember.Component.extend({

tagName : "input",
type : "text",
attributeBindings : [ "name", "type", "value", "id"],

setupTagsInputPlugin: Ember.on('didRender', function() {
    this.$("#tags").tagsInput({
width:"100px"
    });
  }),

});

谢谢你的添加。谢谢你的添加。