Knockout.js 在使用knockout.viewModel插件时,如何在扩展方法中正确引用viewModel?

Knockout.js 在使用knockout.viewModel插件时,如何在扩展方法中正确引用viewModel?,knockout.js,knockout-viewmodel-plugin,Knockout.js,Knockout Viewmodel Plugin,我正在扩展viewModel。我需要实现addEmployee方法,以便它正确地引用viewModel 这就是我迄今为止所做的: JSON: JavaScript: $.getJSON("http://localhost:58191/api/employees", function (jsonModel) { document.getElementById("test").innerText = JSON.stringify(jsonModel); var options = { e

我正在扩展viewModel。我需要实现
addEmployee
方法,以便它正确地引用viewModel

这就是我迄今为止所做的:

JSON:

JavaScript:

$.getJSON("http://localhost:58191/api/employees", function (jsonModel) {

document.getElementById("test").innerText = JSON.stringify(jsonModel);

var options = {
    extend: {
        "{root}": function () {

            var self = this;
            var employees = new Array();

            self.employees = ko.observableArray(employees);
            var arrayTest = [{ "FirstName": "test", "LastName": "test", "Addresses": [{ "StreetNumber": "MI6", "StreetName": "Undisclosed" }, { "StreetNumber": "SAS", "StreetName": "Undisclosed" }] }];

            self.addEmployee = function () {
                self.employees.push(arrayTest);

            }.bind(self);
        }
    }
}

var kovmmappingVM = ko.viewmodel.fromModel(jsonModel, options);    
ko.applyBindings(kovmmappingVM, document.getElementById("POC"));

});
我将感谢任何帮助。谢谢

试试这个:

var kovmmappingVM = ko.viewmodel.fromModel(jsonModel, options);
kovmmappingVM.addEmployee = function (empl) {
    kovmmappingVM.Employees.push(empl);
}
ko.applyBindings(kovmmappingVM, document.getElementById("POC"));
这项工作:

var Employee = function () {

var self = this;    
self.addEmployee = function (kovmmappingVM) {

    kovmmappingVM.Employees.push({
                                    FirstName: "test",
                                    LastName: "test",
                                    Addresses: [{ "StreetNumber": "MI6", "StreetName":   "Undisclosed" }, { "StreetNumber": "SAS", "StreetName": "Undisclosed" }]

                                 });

    model = ko.viewmodel.toModel(kovmmappingVM);
    document.getElementById("test2").innerText = JSON.stringify(model);

    }.bind(self);
}


$.getJSON("http://localhost:58191/api/employees", function (jsonModel) {

    document.getElementById("test").innerText = JSON.stringify(jsonModel);

    var options = {
        extend: {
            "{root}": Employee
        }
    };

    var kovmmappingVM = ko.viewmodel.fromModel(jsonModel, options);   

    ko.applyBindings(kovmmappingVM, document.getElementById("POC"));  
});

您的代码是否引发错误?不,它不会引发任何异常。您遇到的问题是…当我单击调用addEmployee函数的按钮时,它似乎没有用新记录更新viewmodel。我的目标是向Employees collectioninteresting添加新记录,我来试一试:)选项参数呢?你打算保留吗?@user3699387取决于你是否有其他选择你的帮助是有用的。我正在学习这个图书馆,所以我可以再次向你寻求帮助。非常感谢兄弟:)@user3699387好吧,当我回答你的问题时你可以投票:)很高兴我的答案有用
var Employee = function () {

var self = this;    
self.addEmployee = function (kovmmappingVM) {

    kovmmappingVM.Employees.push({
                                    FirstName: "test",
                                    LastName: "test",
                                    Addresses: [{ "StreetNumber": "MI6", "StreetName":   "Undisclosed" }, { "StreetNumber": "SAS", "StreetName": "Undisclosed" }]

                                 });

    model = ko.viewmodel.toModel(kovmmappingVM);
    document.getElementById("test2").innerText = JSON.stringify(model);

    }.bind(self);
}


$.getJSON("http://localhost:58191/api/employees", function (jsonModel) {

    document.getElementById("test").innerText = JSON.stringify(jsonModel);

    var options = {
        extend: {
            "{root}": Employee
        }
    };

    var kovmmappingVM = ko.viewmodel.fromModel(jsonModel, options);   

    ko.applyBindings(kovmmappingVM, document.getElementById("POC"));  
});