编辑功能在knockout js中不起作用

时间:2014-09-02 09:57:20

标签: javascript knockout.js

我刚刚在net.in上创建了一个可编辑的例子当我尝试编辑网格然后它没有显示它显示输入字段blank.can任何身体帮助的值? 在编辑中我正在调用此函数

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

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

这里是小提琴jsfiddle

1 个答案:

答案 0 :(得分:2)

在第一次评估绑定时,每个水果的可观察量(data-bind="value: name.editValue")的editValue子观察点都不存在。当你点击"编辑"链接editValue observable已创建,但是淘汰赛并不知道它必须重新绑定。

你可以解决这两种方式。

1。围绕每个输入创建虚拟if绑定。当if变为true时,内容将重新插入DOM,导致绑定重新评估。确保editValue observable附加到其父级BEFORE editItem observable已设置,否则您处于相同的情况

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

2。确保所有observable都在绑定模型之前将editValue observable附加到父observable,在beginEdit fn中设置editValue observable值。

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());

  ...
}