2014-09-02 3 views
0

방금 ​​net.in에서 사용할 수있는 예제를 사용하여 편집 가능 항목을 만들었습니다. 그리드를 편집하려고 할 때 입력란을 표시하는 값이 표시되지 않습니다 blank.can any 시체 도움? 편집에서 내가 바인딩이 처음으로 과일의 관찰 가능한 각 (data-bind="value: name.editValue")의 관찰 editValue 아이를 평가시 바이올린 jsfiddle편집 기능이 녹아웃 js에서 작동하지 않습니다

답변

2

존재하지 않는이 기능 여기

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

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

입니다 호출 오전 . "edit"링크를 클릭하면 editValue observable이 생성되지만 knockout은 다시 바인딩해야한다는 것을 모릅니다.

이 두 가지 방법으로 해결할 수 있습니다.

1. 각 입력 주위에 가상 if 바인딩을 만듭니다. if가 true가되면 콘텐츠가 DOM에 다시 삽입되어 바인딩이 다시 평가됩니다. 그렇지 않으면 같은 상황

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

2에, 관찰 editValue이 editingItem 설정되어 관찰하기 전에 부모에 연결되어 있는지 확인합니다. 모든 관측 값이 모델이 바인딩되기 전에 부모 observable에 연결된 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()); 

    ... 
} 
관련 문제