簡體   English   中英

編輯功能在敲除js中不起作用

[英]edit functionality is not working in knockout js

我只是使用net.in上提供的示例創建了一個可編輯內容,當我嘗試編輯網格時,它沒有顯示值,而是將輸入字段顯示為空白。有什么幫助嗎? 在編輯中,我正在調用此功能

  self.editFruit = function (fruit) {
        if (self.editingItem() == null) {
            // start the transaction
            fruit.beginEdit(self.editTransaction);

            // shows the edit fields
            self.editingItem(fruit);
        }
    };

這里是小提琴的jsfiddle

在第一次評估綁定時,每個水果的可觀察值( data-bind="value: name.editValue" )的editValue子可觀察data-bind="value: name.editValue"不存在。 當您單擊“編輯”鏈接時,將創建可觀察的editValue,但敲除並不知道必須重新綁定。

您可以解決這兩種方法。

1。 if在每個輸入周圍綁定, if創建一個虛擬的。 如果if變為true,則內容將重新插入到DOM中,從而導致綁定重新評估。 在設置了editItem observable之前,請確保將editValue observable附加到其父項,否則您將處於相同情況

<!-- ko if: $root.isItemEditing($data) -->
<input data-bind="..."></input>
<!-- /ko -->

2。 在綁定模型之前,請確保所有可觀察對象的父對象可觀察對象都具有editValue可觀察對象,並且在beginEdit fn中設置了editValue可觀察對象的值。

function Fruit(data) {
  var self = this;
  self.name = ko.observable(data.name || "");
  self.name.editValue = ko.observable();

  self.rate = ko.observable(data.rate || "");
  self.rate.editValue = ko.observable();
}

ko.observable.fn.beginEdit = function (transaction) {
  ...

  if (self.slice)
    self.editValue(self.slice());
  else
    self.editValue(self());

  ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM