Angular multi-select 下拉列表和 lodash countby

Angular multi-select dropdown and lodash countby

我在这一方面有点空白,我似乎不太明白。

所以我有一个简单的 HTML select => 从后端填充的选项元素(虽然不是很相关)

我的问题是:

假设我有一个这样的预制对象:

{
    keyName1: 450,
    keyName2: 800,
    keyName3: 300
}

我想做的是检查键名称是否与我的多 select 下拉列表中的选项值的名称相匹配(值来自数组,使用 'ng-repeat'选项),如果选项值与键匹配,则将数字值添加到某种增量变量中,这样我就可以显示找到的 'keyNames' 的总数。

例如 - 如果用户 selects 'keyName1' 增量值总计为 450。如果用户 selects 'keyName1' 和 'keyName2'增量值总计为 1,250。

我不知道如何完成此操作 - 现在它只读取下拉列表中的第一项。

这是执行此操作的代码:

_.forEach($scope.widget.instance.settings.serviceContractTypes, function (type) {
     // if item in array matches what is selected in multi-select option
     if(type === $('#contractType:selected').text().trim()) {
        // do stuff
     }
});

希望这一切都有意义,非常感谢您提供的任何方向...

(不用lodash,我用惯了)

jQuery 的 :selected select 或仅适用于 HTML 选项: "The :selected selector works for elements. It does not work for checkboxes or radio inputs; use :checked for them." (https://api.jquery.com/selected-selector/)

你说"I have a simple HTML select => option element which is populated from the back-end (not really relevant tho)"

这可能是相关的。默认情况下,一个 HTML 选项标签不支持多个 selection;为了支持它,它必须明确地创建为 select 倍数。您能否分享该选项的 HTML 代码,以明确这是一个问题还是一个转移注意力的问题?

此外,您能否回显 $scope.widget.instance.settings.serviceContractTypes 并分享以确保它实际上与选项文本中的可用内容匹配?

附录 - 等等,我想我明白了!

$('#contractType:selected') selects #contractType 中的所有 selected 选项并将它们连接起来。然后 $('#contractType:selected').text().trim() trims this down to the first word, which is just the first select编辑选项。您应该执行 $('#contractType:selected').text().split(" ") 之类的操作,然后检查每种类型是否在结果列表中。