Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除js foreach网格不工作_Javascript_Knockout.js - Fatal编程技术网

Javascript 敲除js foreach网格不工作

Javascript 敲除js foreach网格不工作,javascript,knockout.js,Javascript,Knockout.js,这是小提琴: “添加服务”按钮不起作用。我需要它来镜像“添加硬件”按钮的功能。 我下面的代码有点问题:你可以在上面的小提琴上看到它的动作 var viewModel = function(hardware, services) { var self = this; self.hardwares = ko.observableArray(hardware); self.services = ko.observableArray(services); self.ad

这是小提琴:

“添加服务”按钮不起作用。我需要它来镜像“添加硬件”按钮的功能。 我下面的代码有点问题:你可以在上面的小提琴上看到它的动作

var viewModel = function(hardware, services) {
    var self = this;
    self.hardwares = ko.observableArray(hardware);
    self.services = ko.observableArray(services);

    self.addHardware = function() {
        self.hardwares.push({
            name: "",
            price: ""
        });
    };

    self.removeHardware = function(hardware) {
        self.hardwares.remove(hardware);
    };

     self.addService = function() {
        self.services.push({
            name: "",
            price: ""
        });
    };

    self.removeService = function(services) {
        self.services.remove(services);
    };
    self.save = function(form) {
        var allModel = [];
            ko.utils.arrayForEach(services(), function (service) {
                allOrders.push(ko.toJS(service));
            });
            ko.utils.arrayForEach(hardwares(), function (hardware) {
                allOrders.push(ko.toJS(hardware));
            });
            alert("Could now transmit to server: " + ko.utils.stringifyJson(allOrders));
    };
};

var FinalViewModel = new viewModel([]);
ko.applyBindings(FinalViewModel);

构造viewmodel时,您没有传入services参数的参数:

var FinalViewModel = new viewModel([], []); 
ko.applyBindings(FinalViewModel);
更新小提琴:

如果未提供参数,还可以扩充构造函数以使用空数组:

var viewModel = function(hardware, services) {
    var self = this;
    self.hardwares = ko.observableArray(hardware || []);
    self.services = ko.observableArray(services || []);
    /* snip */
};

构造viewmodel时,您没有传入services参数的参数:

var FinalViewModel = new viewModel([], []); 
ko.applyBindings(FinalViewModel);
更新小提琴:

如果未提供参数,还可以扩充构造函数以使用空数组:

var viewModel = function(hardware, services) {
    var self = this;
    self.hardwares = ko.observableArray(hardware || []);
    self.services = ko.observableArray(services || []);
    /* snip */
};

完美的还有一件事,提交时没有弹出警报,你能看一下吗@斯蒂芬哈曼:有几件事:1。您需要单击submit按钮上的binding或表单本身上的submit事件绑定,以及2。您需要迭代self.services和self.hardware:非常好!非常感谢。刚才注意到,在JSON中,name select发送的是它的名称而不是值,你知道吗?@StephenHarman至于复选框,请改用checked绑定:。对于select,该选项没有值,因此没有在该选项上设置值=1,您应该会看到它填充完美!按预期工作。我刚刚提交了复选框,并意识到我在API中读到了这一点。我不知道我怎么会错过了有价值的东西。无论如何,谢谢你。太好了!!!还有一件事,提交时没有弹出警报,你能看一下吗@斯蒂芬哈曼:有几件事:1。您需要单击submit按钮上的binding或表单本身上的submit事件绑定,以及2。您需要迭代self.services和self.hardware:非常好!非常感谢。刚才注意到,在JSON中,name select发送的是它的名称而不是值,你知道吗?@StephenHarman至于复选框,请改用checked绑定:。对于select,该选项没有值,因此没有在该选项上设置值=1,您应该会看到它填充完美!按预期工作。我刚刚提交了复选框,并意识到我在API中读到了这一点。我不知道我怎么会错过了有价值的东西。无论如何,谢谢你。