javascript – Knockout 3.2组件与命名模板?

我试图在淘汰赛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

相关文章

事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支持第三个参数...
js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其他强类型语言...
什么是跨域 跨域 : 广义的跨域包含一下内容 : 1.资源跳转(链接跳转,重定向跳转,表单提交) 2.资源...
@ &quot;TOC&quot; 常见对base64的认知(不完全正确) 首先对base64常见的认知,也是须知的必须有...
搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : 的缩写,说都能直接说出来 :模型, :视图, :视图模...
首先我们需要一个html代码的框架如下: 我们的目的是实现ul中的内容进行横向的一点一点滚动。ul中的内容...