通过JavaScript传递HTML 目标
使用HTML传递到DOM字符串并呈现它 情景 我使用以下语法扩展了可观察对象(使用KnockoutJS)的属性:通过JavaScript传递HTML 目标,javascript,html,knockout.js,Javascript,Html,Knockout.js,使用HTML传递到DOM字符串并呈现它 情景 我使用以下语法扩展了可观察对象(使用KnockoutJS)的属性: self.showDetails.subscribe(function (context) { var details = this.showDetails(); details.nameWithCnpj = context.name() + " <small>" + context.cnpj() + "</small>"; }, this);
self.showDetails.subscribe(function (context) {
var details = this.showDetails();
details.nameWithCnpj = context.name() + " <small>" + context.cnpj() + "</small>";
}, this);
因此我问:我如何教JavaScript(或HTML)使用nameWithCnpj
变量应该是DOM元素而不是简单的字符串?您需要使用而不是文本:
html绑定使关联的DOM元素显示html
由您的参数指定
通常,当视图模型中的值实际为
要呈现的HTML标记字符串
因此,请将您的观点改为:
<h2 class="bold float-left" data-bind="html: nameWithCnpj"></h2>
这取决于您如何使用CNPJ显示名称
,请将代码张贴在您使用CNPJ显示名称内容的位置
!“对不起,@nemesv。现在看一看主帖子——我更新了。你不觉得绑定更合适吗?您使用的是mvvm和模型中紧密耦合的UI逻辑。@BradChristie您是在对我说使用html
绑定而不是text
?(只是出于好奇)@GuilhermeOderdenge:我是说,当你在模型中放置html时,你就错了。是的!这就是为什么会有模型和视图。虽然我会更进一步,从属性中获得
,然后使用cnpj
绑定自己创建一个名称。@BradChristie是的,一般来说我同意,但是html
绑定的存在有一个很好的理由,有时你需要显示一些生成的第三方html(比如在CMS应用程序中)因此,使用但不是坏事。在这个具体的例子中,如果这是这个HTML片段的唯一用法,那么创建一个一次性定制绑定对我来说似乎太过分了…@GuilhermeOderdenge我已经用一个示例模板用法扩展了我的答案。nemesv惊人的模板用法!我相信是我缺乏创造力,哈哈。顺便说一下,非常感谢您和@BradChristie的关注。谢谢你们,谢谢你们&谢谢你们!哦,没有虚拟元素;p gj nemesv
<h2 class="bold float-left" data-bind="text: nameWithCnpj"></h2>
<h2 class="bold float-left" data-bind="html: nameWithCnpj"></h2>
<h2 class="bold float-left"
data-bind="template: { name: 'nameWithCnpj', data: showDetails}"></h2>
<script id="nameWithCnpj" type="text/html">
<span data-bind="text: name"></span>
<small data-bind="text: cpnj"></small>
</script>