Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用命名模板淘汰3.2组件?_Javascript_Knockout.js_Knockout Components - Fatal编程技术网

Javascript 使用命名模板淘汰3.2组件?

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

我正在尝试在淘汰赛3.2.0中使用新的组件系统

目前没有太多文档,但这确实有效

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()
})