Javascript 使用命名模板淘汰3.2组件?
我正在尝试在淘汰赛3.2.0中使用新的组件系统 目前没有太多文档,但这确实有效Javascript 使用命名模板淘汰3.2组件?,javascript,knockout.js,knockout-components,Javascript,Knockout.js,Knockout Components,我正在尝试在淘汰赛3.2.0中使用新的组件系统 目前没有太多文档,但这确实有效 ko.components.register('price-input', { template: '<span>price-input</span>' }) 然后你可以这样做: <div data-bind="template: {name: 'price_input'}"></div> 但它不起作用。有没有一种方法可以在新组件中使用命名模板,或者必须使用AM
ko.components.register('price-input', {
template: '<span>price-input</span>'
})
然后你可以这样做:
<div data-bind="template: {name: 'price_input'}"></div>
但它不起作用。有没有一种方法可以在新组件中使用命名模板,或者必须使用AMD内联或加载
谢谢
编辑:在RP Niemeyer的回答之后,为了澄清,这里是我尝试回答他的模板:
<script type="text/html" id="ifx_price_input">
<h4>PRICE INPUT <span data-bind="text: value"></span></h4>
</script>
它确实加载模板,但将其视为转义字符串
想法?您可以传递一个
元素
属性,该属性要么是元素本身,要么是元素的id
字符串,如下所示:
template: { element: 'myTmpl' }
终于用黑客技术解决了这个问题……我希望淘汰赛的开发者能更好地回答这个问题 这很有效。基本上,我只是手动加载模板文本并将其传递给
register
函数。所以它的工作原理就像是内联的
ko.components.register('price-input', {
template: $('#ifx_price_input').html()
})
在v3.2.0测试版中,这个案例没有得到很好的处理,因此InternalFX需要黑客攻击 这将在v3.2.0 final中修复。它将按照您的预期工作-只需引用
脚本
、模板
或文本区域
元素,其逻辑内容将作为模板节点进行解释
如果您感兴趣,修复和测试此问题的提交程序如下:感谢您抽出时间。这越来越近了…但是请看编辑。哦,这实际上看起来像一个bug。我觉得我们没有正确处理这个问题。在此线程中讨论它:。我想我们现在应该把它修好。
ko.components.register('price-input', {
template: {element: 'ifx_price_input'}
})
template: { element: 'myTmpl' }
ko.components.register('price-input', {
template: $('#ifx_price_input').html()
})