2016-07-04 79 views
1

我正在尝试在另一个元素中创建Aurelia元素。我使用phosphor的停靠框架,当我动态创建面板时,我想添加一个使用Aurelia构建的组件。在Aurelia中创建元素

例如:我有一个非常简单的记录组件:

Logging.html

<template> 
    <h1>Logging....</h1> 
</template> 

Logging.ts:

export class Logging { 
    constructor() { 
     console.log('Logging constructor') 
    } 
} 

组件作品,当我“只是把预期它在页面上“。

现在一些它创建荧光粉的Widget方法里面我有这样的事情:

var widget = new Widget(); 
widget.title = "Got Logs?"; 
var contentElement = document.createElement('logging'); 
widget.node.appendChild(contentElement); 
panel.insertBottom(widget); 

此代码,给定一个荧光粉面板,创建一个Widget,创建它看起来像一个元素:<logging></logging>并添加到到小部件的内部节点。由此产生的“DOM”是正确的,但aurelia不呈现元素。

我也曾尝试使用TemplatingEngine像这样:

import { inject, TemplatingEngine } from 'aurelia-framework'; 

@inject(TemplatingEngine) 
export class AureliaRoot { 
    constructor(templatingEngine) { } 

    attached() { 
     var contentElement = document.createElement("logging"), 
      el = document.getElementById("my-element"); 
     el.appendChild(contentElement); 
     templatingEngine.enhance({element: el, bindingContext: {}}); 
    } 
} 

但这似乎并不工作,但我怀疑我使用它的权利,我想我可能需要使用compile,真的不确定。

任何见解,将不胜感激。

+0

这取决于在这创造了什么问题,因为据我的SPA架构的知识去,他们将在DOM的作为,如果你操纵此操作之外的DOM(您最有可能做的),那么框架将不知道您的更改。 –

+0

确实,但我正在寻找一种方法来“强制汇编”我的观点。 –

回答

1

对不起,我无法完全回答,但我相信您需要使用Aurelia ViewCompiler编译HTML生成的片段,以便Aurelia能够解析它们。

试着看一下下面的链接了解更多信息:How do you use ViewCompiler to manually compile part of the DOM?

+0

这似乎已经过时了,你现在应该使用'TemplatingEngine' –

+0

谢谢你的评论,我会研究TemplatingEngine :) – qwerty2k