Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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 knockoutjs-具有相同选择选项/值的多个下拉列表_Javascript_Knockout.js_Drop Down Menu_Ko.observablearray - Fatal编程技术网

Javascript knockoutjs-具有相同选择选项/值的多个下拉列表

Javascript knockoutjs-具有相同选择选项/值的多个下拉列表,javascript,knockout.js,drop-down-menu,ko.observablearray,Javascript,Knockout.js,Drop Down Menu,Ko.observablearray,我有一个敲除foreach绑定,它生成多个下拉列表,包括单选和多选。我不知道前面会有多少下降 所有下拉列表都是由相同数据类型但经过过滤的项目填充的,但是我想在一个可观察的页面中从所有下拉列表中收集所有选定的项目。将同一个ObserverArray绑定到foreach循环中的所有下拉列表不起作用,因为它被添加到ObserverArray,并立即被其他下拉列表删除 这是可能的还是实现这一点的最佳方法?让每个select绑定到一个不同的observearray,用于当前循环的项目中包含的其所选值,

我有一个敲除foreach绑定,它生成多个下拉列表,包括单选和多选。我不知道前面会有多少下降

所有下拉列表都是由相同数据类型但经过过滤的项目填充的,但是我想在一个可观察的页面中从所有下拉列表中收集所有选定的项目。将同一个ObserverArray绑定到foreach循环中的所有下拉列表不起作用,因为它被添加到ObserverArray,并立即被其他下拉列表删除



这是可能的还是实现这一点的最佳方法?

让每个
select
绑定到一个不同的
observearray
,用于当前循环的项目中包含的其所选值,然后在根级别添加一个,以将它们组合在一起:

var distinctItemType = function() {
  this.selectedOptions = ko.observableArray();
}

var vm = function() {
  var self = this;

  this.distinctItemTypes = ko.observableArray();

  this.allSelectedOptions = ko.computed(function() {
    var ret = [];
    for (var x = 0; x < self.distinctItemTypes().length; x++)
      ret = ret.concat(self.distinctItemTypes()[x].selectedOptions());

    return ret;
  });
}
var differentitemtype=function(){
this.selectedOptions=ko.observatarray();
}
var vm=函数(){
var self=这个;
this.differentitemtypes=ko.observableArray();
this.allSelectedOptions=ko.computed(函数(){
var-ret=[];
对于(var x=0;x
是,但这仅在下拉列表数为静态时有效。对我来说,它的变量可以有1、2、5或更多的下拉列表。你有没有办法单独更改每个
select
绑定的内容?查看viewmodel的更多信息可能会有所帮助。@Sander特别是
DistrictItemTypes
的组成部分。我认为将所选选项绑定到每种项目类型上是一种可行的方法,然后使用类似于我所发布的内容的东西将它们从根本上结合在一起level@Sander用我的观点编辑了这篇文章——对
distributetemtypes
是什么做了一些假设。如果这没有帮助,你能为你的问题添加更多的上下文吗?是的,我实际上也在想同样的问题。DifferentitemTypes由一些属性组成,其中一个属性是筛选列表。让我们看看是否可以将一个observableArray添加到所有对象中,然后创建一个computed来将它们放在一起。
var distinctItemType = function() {
  this.selectedOptions = ko.observableArray();
}

var vm = function() {
  var self = this;

  this.distinctItemTypes = ko.observableArray();

  this.allSelectedOptions = ko.computed(function() {
    var ret = [];
    for (var x = 0; x < self.distinctItemTypes().length; x++)
      ret = ret.concat(self.distinctItemTypes()[x].selectedOptions());

    return ret;
  });
}