Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过JavaScript传递HTML 目标_Javascript_Html_Knockout.js - Fatal编程技术网

通过JavaScript传递HTML 目标

通过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);

使用HTML传递到DOM字符串并呈现它

情景 我使用以下语法扩展了可观察对象(使用KnockoutJS)的属性:

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>