温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - How to bind to an html attribute when the innerhtml itself is already generated dynamically?
aurelia html javascript

javascript - 当innerhtml本身已经动态生成时,如何绑定到html属性?

发布于 2020-05-11 15:19:38

首先,这是我的index.html:

<template>
    <div class="panel" innerHtml="${renderedPanel}"></div>
</template>

页面呈现后即会生成innerHtml,最终可能是这样的:

<div class="panel au-target" au-target-id="294">
   <div>
      <button class.bind="classList">this is a button</button>
   </div>
   <div>
      <img src="image.png">
   </div>
</div>

现在假设我的脚本中包含以下代码:

public classList = 'btn btn-success';

setTimeout(x => {
   this.classList= 'btn btn-warning';
},5000);

我希望按钮在5秒钟后会改变,但是不会改变。实际上,它甚至没有任何样式,因为它似乎从一开始就无法绑定到classList。Aurelia仅绑定到初始HTML,而不绑定到由我拥有的替换innerHtml的字符串所生成的HTML,如下所示:

this.renderedPainel = this.renderedPainel.replace('$' + i + '$', '<button class.bind="test">Ok</button>');

额外说明:仅当我正在处理幻灯片放映时才会发生超时,并且我将遍历每个图像替换html中的图像,因此实际上要替换“ class”而不是替换“ class”,而不需要替换图像的“ src”刷新所有其他html,因为我有需要继续播放的视频。$ i $只是我要替换的小部件的索引。

有关如何进行此操作的任何线索?

查看更多

提问者
Karolis Vaitkevicius
被浏览
6
Karolis Vaitkevicius 2020-02-25 01:12

这就是问题所在,但是在另一篇文章中:Aurelia不绑定innerHTML绑定语句

这或多或少是我解决问题的方式:https : //github.com/aurelia-contrib/aurelia-dynamic-html

我想我的问题要是能更好地解释,如果我更清楚自己在处理什么。