0

我在 Durandal 项目的 html 页面中有一个基础架构 Ignite UI 组合。我希望它的selectedItem属性绑定到后面的 JavaScript 中的任何变量。我该怎么做?谢谢你。

4

1 回答 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 回答