javascript - KO Component - 在组件绑定(bind)中保留 DOM 元素

标签 javascript knockout.js

我第一次尝试使用 KO 3.2 版本来设计组件。

目前,我正在尝试创建一个网格,并且确实希望向程序员公开组件将生成的结果表元素的头部和主体部分的相关标记。

这是我试图在所需的语法风格方面实现的示例:

<pht-dataGrid params="{ model: dataGridModel, 
                        header: 'data-header', 
                        lineItem: 'data-line-item', 
                        itemContent: 'data-item-content' }">

                 <script type="text/html" id="data-header">
                    <th class="AlignLeft"><h3>Column 1</h3></th>
                    <th class="AlignLeft"><h3>Column 2</h3></th>
                </script>

                <script type="text/html" id="data-line-item">
                    <td><span data-bind="text: Name"></span></td>
                    <td>Some Type</td>
                </script>
</pht-datagrid>

这种方法的问题在于,KO 在启动渲染过程时只是简单地删除了 pht-dataGrid 组件。

问题:是否有办法避免这种行为以达到我想要的效果?

最佳答案

正如您所描述的,这不受支持。您可以将脚本 block 移到组件 block 之外。

<pht-dataGrid params="{ model: dataGridModel, 
                        header: 'data-header', 
                        lineItem: 'data-line-item', 
                        itemContent: 'data-item-content' }">
</pht-datagrid>

<script type="text/html" id="data-header">
    <th class="AlignLeft"><h3>Column 1</h3></th>
    <th class="AlignLeft"><h3>Column 2</h3></th>
</script>

<script type="text/html" id="data-line-item">
    <td><span data-bind="text: Name"></span></td>
    <td>Some Type</td>
</script>

目前存在一些关于实现此目的的可能方法的未决问题:

关于javascript - KO Component - 在组件绑定(bind)中保留 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25457271/

相关文章:

javascript - CoffeeScript 错误

javascript - 解密 - 加密 crypto-js

javascript - jQuery 动画导航如何在单击时折叠其他元素

javascript - DatePicker jquery UI 不工作

javascript - 如何使 React 组件在接收到 Web 套接字上的更新后重新加载?

c# - 文件上传到 Windows Azure Blob

javascript - 如何通过KNOCKOUT中的数据绑定(bind)值更改css中规则的值?

javascript - Knockout.js - 更新父 View 模型中的数组,并使用第二 View 模型中的值

javascript - 从 shell 将变量参数传递给 Spidermonkey javascript

knockout.js - Typescript 中的 Knockout Viewmodel