In knockout's documentation, it mentions optionsAfterRender
. I was trying to add data
attribute value without succeed.
Here's the sample from the doc:
<select size=3 data-bind="
options: myItems,
optionsText: 'name',
optionsValue: 'id',
optionsAfterRender: setOptionDisable">
</select>
<script type="text/javascript">
var vm = {
myItems: [
{ name: 'Item 1', id: 1, disable: ko.observable(false)},
{ name: 'Item 3', id: 3, disable: ko.observable(true)},
{ name: 'Item 4', id: 4, disable: ko.observable(false)}
],
setOptionDisable: function(option, item) {
ko.applyBindingsToNode(option, {disable: item.disable}, item);
}
};
ko.applyBindings(vm);
</script>
Here's what I tried but didn't work but also no errors.
setOptionDisable: function(option, item) {
$(option).text(''); // this will blank out the text in options
$(option).data('test', '123'); // but this won't do anything at all.
$(option).attr('data-test', '123'); // this worked as pointed out by Matt
}