【问题标题】:How do get Aurelia to render my view after dynamically adding a custom element to the DOM?在将自定义元素动态添加到 DOM 后,如何让 Aurelia 呈现我的视图?
【发布时间】:2015-07-23 18:13:42
【问题描述】:

当在 DOM 中创建自定义元素并添加实现从 aurelia-framework 可绑定的相应视图模型时,我的视图呈现完美。

DOM 中的自定义元素如下:

<!-- chatbox.html -->
<template>
...    
    <ul class="chat">
        <answer name="Reah Miyara" nickname="RM" text="Hello World"></answer>
    </ul>
...
    <button class="btn" click.trigger="addCustomElement()">Add</button>
...
</template>

从浏览器进行检查时,Aurelia 的魔法渲染会生成与 DOM 中的自定义元素相关联的各种子元素。

当我尝试使用 jQuery 向 DOM 动态添加额外的自定义元素时,就会出现问题......

// chatbox.js
addCustomElement() { 
    $('.chat').append('<answer name="Joe Smith" nickname="JS"></answer>');
}

使用按钮调用此方法(Aurelia's 'click.trigger') 确实将自定义元素添加到 DOM,但 没有 允许自定义的各种子元素要在视图中正确呈现的元素...

如何正确地将自定义元素动态添加到 DOM 或告诉 Aurelia 处理我添加的自定义元素,以便它呈现在我的视图中?

提前致谢!

【问题讨论】:

  • 为什么不使用中继器并将新项目附加到中继器绑定到的数组中?

标签: javascript dom aurelia


【解决方案1】:

我会修改如下:

//chatbox.js
export class Chatbox {
   answers = [{
      name:'Reah Miyara',
      nickname:'RM'
   }];
   addCustomElement() {
      answers.push({
        name:'Joe Smith',
        nickname: 'JS'
      }];
   }
}

然后在您的模板中,在 answers 属性上使用 repeat.for。 Aurelia 的绑定系统会确保answers 数组中的每个元素都有一个&lt;answer&gt; 标签。

<!-- chatbox.html -->
<template>
 ...
<ul class="chat">
  <answer repeat.for="answer of answers" name.bind="answer.name" nickname.bind="answer.nickname"></answer>
</ul>
<button class="btn" click.trigger="addCustomElement()">Add</button>
... 
</template>

【讨论】:

  • 我最终做了什么!
猜你喜欢
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
相关资源
最近更新 更多