Javascript 基于先前选择的淘汰动态选项
我想创建一个下拉列表,其中的选项根据两个表之间的匹配方式而变化,基本上所有不匹配的元素都有剩余的值。我有个问题,我不知道从哪里开始 这就是我走了多远 } 结果是所有框都具有相同的值Javascript 基于先前选择的淘汰动态选项,javascript,knockout.js,lodash,Javascript,Knockout.js,Lodash,我想创建一个下拉列表,其中的选项根据两个表之间的匹配方式而变化,基本上所有不匹配的元素都有剩余的值。我有个问题,我不知道从哪里开始 这就是我走了多远 } 结果是所有框都具有相同的值 这是我想到的。我读了几遍,不清楚你想达到什么目的。你只想在项目被选中后从列表中删除它们吗?@Tanner是的,我想删除selected@Jamiec对不起,我想做的是只允许选择不匹配的值,例如abc456,ABC789我想出了一个解决方案 var vm = function () { var listA = ko.
这是我想到的。我读了几遍,不清楚你想达到什么目的。你只想在项目被选中后从列表中删除它们吗?@Tanner是的,我想删除selected@Jamiec对不起,我想做的是只允许选择不匹配的值,例如abc456,ABC789我想出了一个解决方案
var vm = function () {
var listA = ko.observableArray([
{ toMatch: "abc123", name: "Andrew" },
{ toMatch: "abc456", name: "Andrew" },
{ toMatch: "abc789", name: "Andrew" }]);
var listB = ko.observableArray([
{ match: ko.observable("abc123"), surname: "Smith" },
{ match: ko.observable(""), surname: "Cruse" },
{ match: ko.observable(""), surname: "Domnic" }]);
var optionsList = ko.computed(function () {
var tempArr = [];
var tempArr_2 = [];
_.each(listA(), function (item, key, list) {
var matched = false;
tempArr.push(item.toMatch);
_.each(listB(), function (item_1, key_1, list_1) {
if (matched == false && item.toMatch == item_1.match()) {
matched = true;
tempArr_2.push(item.toMatch);
}
})
})
console.log(_.difference(tempArr,tempArr_2))
return _.difference(tempArr,tempArr_2);
});
return {
listA: listA,
listB: listB,
optionsList: optionsList
}