2014-07-06 123 views
0

http://jsfiddle.net/kcFpS/5/更新ObservableArray - Knockout.js

每行都有一個'編輯'按鈕。點擊此處,

  1. 它應該在表格下方的相應文本框中填充行值。例如:'productName'將填入txtName等。

  2. 編輯文本框中的文本將反映表中的更改。

但是foll。代碼不起作用:

<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:...}',敲除提供'disable'和'enable'綁定。 http://knockoutjs.com/documentation/disable-binding.html – huocp

+0

對不起。錯誤的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

相關問題