我试图在淘汰赛3.2.0中使用新的组件系统.
目前没有太多的文档,但是这样做是有效的.
ko.components.register('price-input',{ template: '<span>price-input</span>' })
但是,模板绑定允许您指定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'} })
它加载模板,但将其视为转义的字符串.
想法?
解决方法
在v3.2.0 beta版本中,这种情况没有得到很好的解决,因此需要InternalFX的骇客.
这将在v3.2.0最后修正.它将按照您的期望工作 – 只需引用脚本,模板或textarea元素,其逻辑内容将被视为模板节点.
如果你有兴趣,修复和测试这个的提交在这里:https://github.com/knockout/knockout/pull/1454