从淘汰2.3更新到3.2时,嵌套模板失败
Nested templates failed when updating from knockout 2.3 to 3.2
我有一个使用敲除2.3.0和嵌套模板的页面,在我将其更新到3.2.0版本之前一直运行良好。
如果我去掉页面的其余部分,失败的结构看起来是这样的:
...
<!-- ko template: {name: 'meta-data-template', foreach: DocumentMetaDataList} -->
<!-- /ko -->
...
<script type="text/html" id="meta-data-template">
<label data-bind="text: FieldName() + ':', visible: $root.labelIsVisible($data)"></label>
<!-- ko template: { name: $root.displayAddFieldTemplate, data: $data } -->
<!-- /ko -->
</script>**
在这种情况下,displayAddFieldTemplate
解析为"meta-add-template"
,看起来像这个
<script type="text/html" id="meta-add-template">
<a class="add-fieldvalue" href="#" data-bind="visible: $root.fieldValueIsVisible($data)">Link</a>
</script>
我已经对$root.fieldValueIsVisible($data)
进行了硬编码以返回true,因此应该始终显示链接。然而,当我在浏览器中运行它时,会出现以下javascript错误:
Uncaught TypeError: Unable to process binding "template: function (){return { name:$root.displayAddFieldTemplate,data:$data} }"
消息:未定义不是功能
如果我从meta-add-template
中删除数据绑定,那么它看起来像这样,它可以按预期工作。
<script type="text/html" id="meta-add-template">
<a class="add-fieldvalue" href="#">Link</a>
</script>
即使我将一个值内联到data-bind
中,它也会给出相同的错误消息。所以这个模板也失败了:
<script type="text/html" id="meta-add-template">
<a class="add-fieldvalue" data-bind="visible:true" href="#">Link</a>
</script>
为什么这没有按预期工作,为什么在从2.3更新到3.2后停止工作?
您使用的是旧版本的jquery模板吗?该库已被弃用。尝试删除对它的引用,因为knockoutjs现在已经内置了对相同语法的支持。
jQuery模板已弃用?
http://knockoutjs.com/documentation/template-binding.html
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 用于搜索的聚合物嵌套绑定
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- d3中堆栈函数和嵌套函数之间的差异
- 如何打印嵌套对象的所有值
- JavaScript 中的嵌套函数和 “this” 关键字
- 设置嵌套对象属性的更好方法
- querySelector/getElementByClassName嵌套项的顺序
- IE9 javascript嵌套`createElement`失败
- 角嵌套 ng 重复失败
- 筛选器嵌套在 Jade 中失败
- Javascript在尝试声明嵌套对象时失败
- 从淘汰2.3更新到3.2时,嵌套模板失败
- 如何在Mocha中多个嵌套测试通过或失败后清理文件
- AngularJs指令:嵌套的ng-class失败了
- 嵌套JS脚本.美元.随机脚本后getScript失败
- jQuery嵌套$(this)在complete函数内失败
- 从嵌套对象内调用函数失败