2014-07-06 1 views
0

http://jsfiddle.net/kcFpS/5/업데이트 ObservableArray - Knockout.js

각 행에는 '편집'버튼이 있습니다. 이것을 클릭하면

  1. 표 아래의 해당 텍스트 상자에있는 행 값을 채워야합니다. 예 : 'productName'이 txtName 등을 기입합니다.

  2. 텍스트 상자의 텍스트를 편집하면 테이블의 변경 내용이 반영됩니다.

그러나. 코드가 작동하지 않습니다.

<td> 
    <button data-bind="click: $parent.editProduct">Edit</button> 
</td> 

function Product(Name,Qty) { 
      pname = ko.observable(Name); 
      qty = ko.observable(Qty); 
     } 

     var ViewModel = function() { 
      var self = this; 
      self.products = ko.observableArray([{ pname: 'Mobile', qty: 5 }, 
              { pname: 'Car', qty: 1}]); 

      self.SelectedItem = ko.observable(new Product());     

      self.editProduct = function (item) { 
       self.SelectedItem(item); 
      }; 
}; 

     ko.applyBindings(new ViewModel()); 
+0

문제가 무엇 : 나는 당신을 위해 예를 스케치? 당신 jsfiddle 잘 작동하고 있습니다. 하지만 당신은'attr : {disable : ...}'을 할 필요가 없습니다. knockout은'disable'과'enable' 바인딩을 제공합니다. http://knockoutjs.com/documentation/disable-binding.html – huocp

+0

죄송합니다. Wrong Url.Updated – Ruby

답변

1

질문을 올바르게 이해하면. 데이터 배열 편집을 구현해야합니다.

var ViewModel = function() { 
var $scope = this; 

$scope.array = ko.observableArray([]); 
$scope.array.push({ name: ko.observable('Ben'), lastName: ko.observable('Afleck'), editMode: ko.observable(false) }); 
$scope.array.push({ name: ko.observable('Tom'), lastName: ko.observable('Cruse'), editMode: ko.observable(false) }); 

$scope.toggleEdit = function(data) { 
if (data.editMode()) { 
data.editMode(false); 
console.log(data.name()); 
console.log(data.lastName()); 
} 
else 
data.editMode(true); 
}; 
return $scope; 
}; 
var vm = new ViewModel(); 
ko.applyBindings(vm); 

http://jsfiddle.net/9X3er

+0

대단히 감사합니다. – Ruby

관련 문제