KO组件 - 在组件绑定中保留DOM元素

时间:2014-08-23 00:22:51

标签: 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组件。

问题:无论如何都要回避这种行为以达到我之后的效果吗?

1 个答案:

答案 0 :(得分:1)

如您所述,这不受支持。您可以将脚本块移动到组件块之外。

<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>

目前有一些关于可能的方法的公开问题: