簡體   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