Нокаут optionsText / optionsValue привязки не будут работать
Почему эта привязка не выполняется с исключением "значение не найдено"?
<select data-bind="options: $root.arr, optionsValue: key, optionsText: value"></select>
Данные массива параметров таковы:
ko.observableArray ([
{key: 'foo', value: '1'},
{key: 'bar', value: '2'}
])
Я уже решил свою собственную проблему, но проложил маршрут крошки Stackru, чтобы другие не тратили свое время впустую, как я пытался это выяснить. ;-)
1 ответ
Кавычки требуются вокруг имен свойств, используемых в optionsText и optionsValue. Как это:
<select data-bind="options: $root.arr, optionsValue: 'key', optionsText: 'value'"></select>
Я предположил, что:
options
Привязка создала новый контекст привязки, такой какwith
а такжеforeach
делать- OptionsValue и optionsText работали как
text
привязка, где вы можете просто указать имя свойства и КО волшебным образом связывается со свойствами
Оба предположения были неверны, как я понял после часа перебора источников нокаутов, пытаясь понять, что я делаю неправильно. Arrrrgh!
Вместо этого, если вы не используете функцию для извлечения значения или текста для каждого параметра и хотите вместо этого получить доступ к свойству, вам необходимо заключить имя свойства в кавычки. Это показано в документации, если вы внимательно прочитали пример кода. Что я не сделал.;-(