Как мне сохранить выбранные значения kendoMultiSelect в переменной массива? - PullRequest
1 голос
/ 16 октября 2019

Я хочу сохранить выбранные значения из раскрывающегося списка в массиве, но получить нулевые значения.

Это правильный способ хранения выбранных значений в массиве?

var selecteddeliverableLists = ko.observableArray();

 function loadDeliverableKeyValuePairs() {
        deliverableKeyValuePairLists.removeAll();
        $.get("/common/packagestatus/get/pairs", function (responseData) {
            var dataArray = deliverableKeyValuePairLists();
            responseData.forEach(function (o) {
                dataArray.push({
                    Id: o.key,
                    Name: o.value
                });
            });
            deliverableKeyValuePairLists.valueHasMutated();
        }).done(function () {
            selecteddeliverableLists =  $("#deliverable__kendo__selection").kendoMultiSelect({
                dataTextField: "Name",
                dataValueField: "Id",
                optionLabel: " -- Select All -- ",
                dataSource: deliverableKeyValuePairLists(),
                index: 0,
                change: filterdeliverable
                //onChangeDeliverableFilter
             });
            });
        selecteddeliverableLists.valueHasMutated();
    }


function filterdeliverable() {
        var newval = selecteddeliverableLists.val();
        console.log(newval);
    }

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Вы можете использовать событие change kendoMultiSelect для сохранения массива новых значений при внесении изменения.

Вы можете использовать новый массив прямо в функции обратного вызова события change илииспользуйте его позже.

См. простой пример в следующем фрагменте:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Kendo UI Snippet</title>

    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.917/styles/kendo.common.min.css"/>
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.917/styles/kendo.rtl.min.css"/>
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.917/styles/kendo.silver.min.css"/>
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.917/styles/kendo.mobile.all.min.css"/>

    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script src="https://kendo.cdn.telerik.com/2019.3.917/js/kendo.all.min.js"></script>
</head>
<body>
  
<select id="multiselect" multiple="multiple">
    <option>Item1</option>
    <option>Item2</option>
</select>
  
  <button onclick="$('#output').html(values.map(function (value) {return '<li>' + value + '</li>'}))">Update</button>
  <ul id="output"></ul>
<script>
  var values = [];
  
  $("#multiselect").kendoMultiSelect({
    change: function(e) {
      values = this.value();
    }
	});
</script>
</body>
</html>
0 голосов
/ 17 октября 2019

Вы получаете значение как element_name.data ("kendoMultiSelect"). Value ();

function filterdeliverable() {
        var newval = $("#deliverable__kendo__selection").data("kendoMultiSelect").value();
        console.log(newval);
    }
...