Как добавить заголовок в опцию выбора привязки данных - PullRequest
0 голосов
/ 24 мая 2018

Я изучал, как добавить заголовок в свойствах опции, так как мой тег select привязан к данным для динамической генерации содержимого опции

                            <select class="form-control test" style="height:220px;" multiple="multiple" data-bind="options: $parent.InitiatorFields, optionsText: 'FieldDescription', optionsValue: 'FieldCode', selectedOptions: $root.selectedFromListRule "></select>

Я хотел, чтобы произошло что-то подобное

<select class="form-control test" style="height:220px;" multiple="multiple" data-bind="options: $parent.InitiatorFields, optionsText: 'FieldDescription', optionsValue: 'FieldCode', selectedOptions: $root.selectedFromListRule ">
<option data-bind="attr {title: 'FieldDescription'}"></option>

возможно ли это?

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете использовать optionsAfterRender, которые были задокументированы здесь .

Если вам нужно запустить дополнительную пользовательскую логику для сгенерированных элементов option, вы можете использовать optionsAfterRenderПерезвоните.Функция обратного вызова вызывается каждый раз, когда в список вставляется элемент option со следующими параметрами:

Примером того, что вы хотите, будет:

var VM = function(){
  this.options = ko.observableArray(["Option 1", "Option 2", "Option 3"]);
  this.selectedOptions = ko.observableArray(["Option 2"]);
  this.setTitle = function(option, item){
    ko.applyBindingsToNode(option, {attr: {title: "FieldDescription"}});
    // option.title = "FieldDescription"; // Or this line directly
  }
}

ko.applyBindings(new VM());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<select multiple="true" data-bind="options: options, selectedOptions: selectedOptions, optionsAfterRender: setTitle">
...