我正在尝试使用 knockout 3.2.0 中的新组件系统。
目前没有太多文档,但这确实有效。
ko.components.register('price-input', {
template: '<span>price-input</span>'
})
但是 template
绑定(bind)允许您指定一个已经存在于 DOM 中的模板名称,例如:
<script type="text/html" id="price_input">
<span>price-input</span>
</script>
然后你可以这样做:
<div data-bind="template: {name: 'price_input'}"></div>
所以我尝试了这个:
ko.components.register('price-input', {
template: {name: 'price_input'}
})
但它不起作用。有没有一种方法可以将命名模板与新组件一起使用,或者它们必须是内联的或由 AMD 加载的。
谢谢
编辑:在 RP Niemeyer 的回答之后,为了澄清这里是我尝试他的回答的模板:
<script type="text/html" id="ifx_price_input">
<h4>PRICE INPUT <span data-bind="text: value"></span></h4>
</script>
这是组件代码:
ko.components.register('price-input', {
template: {element: 'ifx_price_input'}
})
它确实加载了模板,但将其视为转义字符串。
想法?
最佳答案
您可以传递 element
属性,该属性可以是元素本身,也可以是作为元素 id
的字符串,例如:
template: { element: 'myTmpl' }
关于javascript - 具有命名模板的 Knockout 3.2 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24705388/