当插件已经在另一个组件中时,从插件的元素创建一个组件

Creating a component from a plugin's element when plugin is already inside another component

我使用的是第三方插件,我无法控制它。我在我的整个应用程序中使用 Ember 除了这个插件,我需要在由所述插件呈现的 div 中实例化一个组件以我想要的方式控制它(避免使用 jQuery 事件等)。

1- 我正在创建一个名为 "MyNewComponent"

的组件

2- 当前结构:

<myComponent1>
    <myPlugin-notEmber>
       <div-where-I-want-to-append-MyNewComponent class="divClass"/>
    </myPlugin-notEmber>
</myComponent1>

3- 请注意 "div-where-I-want-to-append-MyNewComponent" 是由插件呈现的,而不是由我呈现的。

4- 我目前在 myComponent1 中尝试做的是:

onDidInsertElement: Em.on('didInsertElement', function() {
    this.$().find('.divClass').each(function(index, element) {
        MyNewComponent.create().appendTo(Em.$(element));
    });
}),

为什么不起作用:

我得到这个:(Ember 1.13)

"You cannot append to an existing Ember.View. Consider using Ember.ContainerView instead."

我在找什么:

a) 正确的方法或

b) 等效的替代方案(将在该插件内创建一个组件)

您最好的选择是使用 ember-wormhole

这允许您将任何内容放入另一个 div 中并带有 id,因此:

{{#ember-wormhole to="destination"}}
  {{my-new-component}}
{{/ember-wormhole}}

还有其他地方

<div id="destination"></div>

这将渲染 div 中的 {{my-new-component}}