更新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

每行将有一个“编辑”按钮。点击这里

  • 它应该将行值填入表下相应的文本框中。例如:“productName”将填写txtName等

  • 编辑文本框中的文本将反映表中的更改

  • 但是福勒。代码不起作用:

    <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。已更新