igCombo в Durandal связать выбранные элементы
У меня есть комбо Ign ite UI Infragistics на html-странице в проекте Durandal. Я хочу ее selectedItem
свойство, которое будет связано с любой переменной в JavaScript. Как мне это сделать? благодарю вас.
1 ответ
Взгляните на этот пример: Bind Combo With KnockoutJS (Durandal использует Knockout, поэтому вы сможете взять большую часть кода этого примера и использовать его повторно).
По сути, в вашей модели представления вам понадобится дополнительная наблюдаемая, которая будет содержать текущий выбор, в этом примере это "actorName", определенное как:
function ViewModel(actorsList) {
var self = this;
this.actorsList = actorsList;
this.actors = ko.observableArray(self.actorsList);
// The name of the currently selected customer.
this.actorName = ko.observable(self.actors()[0].name);
}
(Я отредактировал некоторые из них, так как в примере есть второй элемент select, используемый для изменения комбинации)
Затем в своем комбо в представлении вы хотите связать это дополнительное наблюдаемое со свойством 'text', как в примере:
<span id="comboActors" data-bind="igCombo: {
text: actorName,
dataSource: actors,
textKey: 'name',
valueKey: 'id',
allowCustomValue : true,
enableSelectionChangedUpdate: true,
width: '200',
mode: 'dropdown',
enableClearButton: false
}"></span>
Обратите внимание, как name - это значение, которое вы передаете наблюдаемой модели представления, и то же свойство name определяется как текстовый ключ, поэтому комбинация фактически выберет нужный элемент при задании текста. Теперь все, что вам нужно сделать, это изменить значение, например:
viewModel.actorName("Jeremy Irons");
И комбо изменит выбор (вы даже можете попробовать это с примером, используя код в консоли). Это основа, есть раздел справки по настройке поддержки Knockout (igCombo) Документация Knockout / Durandal, которую вы можете проверить на случай, если вы не сможете приспособить эту реализацию к своему проекту.