更新ObservableArray-Knockout.js
每行将有一个“编辑”按钮。点击这里更新ObservableArray-Knockout.js,knockout.js,Knockout.js,每行将有一个“编辑”按钮。点击这里 它应该将行值填入表下相应的文本框中。例如:“productName”将填写txtName等 编辑文本框中的文本将反映表中的更改 但是福勒。代码不起作用: <td> <button data-bind="click: $parent.editProduct">Edit</button> </td> function Product(Name,Qty) { pname = ko.obs
<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());
编辑
功能产品(名称、数量){
pname=ko.可观察(名称);
数量=可观察的ko(数量);
}
var ViewModel=函数(){
var self=这个;
self.products=ko.observearray([{pname:'Mobile',数量:5},
{pname:'Car',数量:1}]);
self.SelectedItem=ko.observable(新产品());
self.editProduct=功能(项目){
self.SelectedItem(项目);
};
};
应用绑定(新的ViewModel());
如果我正确理解了你的问题。您需要实现对数据数组的编辑。我给你画了一个例子:
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);
有什么问题吗?你的JSFIDLE工作得很好。但是您不必执行
attr:{disable:…}
、提供的敲除操作disable
和enable
开箱即用绑定。很抱歉错误的Url。已更新