我在 Durandal 项目的 html 页面中有一个基础架构 Ignite UI 组合。我希望它的selectedItem
属性绑定到后面的 JavaScript 中的任何变量。我该怎么做?谢谢你。
问问题
949 次
1 回答
3
看一下这个示例:Bind Combo With KnockoutJS(Durandal 使用 Knockout,因此您应该能够获取该示例的大部分代码并重用)。
基本上,在您的视图模型中,您将需要一个额外的 observable 来保存当前选择,在此示例中,它是定义为的“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);
}
(我已经编辑了一些,因为示例有第二个选择元素用于修改组合选择)
然后在视图中的组合中,您希望将此额外的 observable 绑定到示例中的“文本”属性:
<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 是您传递给 viewmodel observable 的值,并且相同的 'name' 属性被定义为文本键,这就是为什么当您设置文本时组合实际上会选择正确的项目。现在您需要做的就是修改该值,例如:
viewModel.actorName("Jeremy Irons");
并且组合将更改选择(您甚至可以使用控制台中的代码在示例中尝试此操作)。这是基础知识,有一个关于配置 Knockout Support (igCombo) Knockout / Durandal文档的帮助主题供您查看,以防您的项目中不适合此实现。
于 2013-10-04T09:30:58.717 回答