Angular多选下拉菜单和lodash countby

时间:2017-07-24 13:48:23

标签: javascript angularjs select lodash option

我在这一方面画了一个空白,我似乎无法弄明白。

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

我的问题是:

让我们说我有一个预制的对象,例如:

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

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

例如 - 如果用户选择' keyName1'增量值总计为450.如果用户选择' 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,我只是习惯使用它)

1 个答案:

答案 0 :(得分:2)

jQuery:选择的选择器仅适用于HTML选项: "选择的选择器适用于元素。它不适用于复选框或无线电输入;使用:检查它们。"  (https://api.jquery.com/selected-selector/

你说"我有一个简单的HTML select =>从后端填充的选项元素(不是真正相关的)"

这可能是相关的。默认情况下,HTML选项标记不支持多个选择;它必须明确地创建为选择倍数才能支持它。您是否可以共享该选项的HTML代码,以明确这是一个问题还是一个红色鲱鱼?

另外,你能回复$ scope.widget.instance.settings.serviceContractTypes并分享,以确保它实际匹配选项文本中的可用内容吗?

ADDENDUM - 等等,我想我已经明白了!

$(' #contractType:selected')选择#contractType中的所有选定选项并连接它们。然后$(' #contractType:selected')。text()。trim()将其修剪为第一个单词,这是第一个选定的选项。您应该执行类似$(' #contractType:selected')。text()。split("")然后检查每个类型是否在结果列表中。