繁体   English   中英

从击倒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模板? 该库已被弃用。 尝试删除对它的引用,因为基因敲除js现在已经内置了对相同语法的支持。

jQuery模板已弃用?

http://knockoutjs.com/documentation/template-binding.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM