1

我想使用淘汰赛来向用户提供有关他们所做选择的简单反馈。

我当前的代码从多选下拉列表中返回 VALUE,这对用户没有任何意义。我宁愿显示他们选择的 SelectedItem 的 TEXT。

有任何想法吗?

当前行为(显示 VALUE 而不是 TEXT)在 Fiddle 处:

http://jsfiddle.net/Y4tK2/

HTML:

<select data-bind="selectedOptions: multipleSelectedOptionValues" id="CollectionStatusIds" multiple="multiple" name="CollectionStatusIds" size="5">
<option value="1">ACTIVE</option>
<option value="2">ARRANGEMENT</option>
<option value="23">CONSISTENT PMTS</option>
<option value="9">UNABLE TO CONTACT</option>
</select>

淘汰赛.js

var viewModel = {multipleSelectedOptionValues: ko.observable(),};
ko.applyBindings(viewModel);
4

2 回答 2

0

我不认为 KnockoutJS 如何与select..knidly 检查文档中的示例
您需要首先observableArray使用您的选择选项声明并将所选选项绑定到observable对象..

演示

 var viewModel = {
     items: ko.observableArray([{
         value: 1,
         text: 'ACTIVE'
     }, {
         value: 2,
         text: 'ARRANGEMENT'
     }, {
         value: 16,
         text: 'ATTY INVOLVEMENT'
     }, {
         value: 17,
         text: 'BROKEN PROMISE'
     },

     {
         value: 3,
         text: 'CLIENT ISSUE'
     }, {
         value: 23,
         text: 'CONSISTENT PMTS'
     }, {
         value: 9,
         text: 'UNABLE TO CONTACT'
     }

     ]),
     multipleSelectedOptionValues: ko.observable(),
 };
 ko.applyBindings(viewModel);

JSfiddle 示例

于 2013-10-30T11:35:25.560 回答
0

我认为您无法使用内置绑定来做到这一点。但你可以这样做(更新小提琴:http: //jsfiddle.net/Y4tK2/7/):

html:

<div style="float: left; padding: 2px;">Collection Status:
    <br />
    <select data-bind="selectedOptions: multipleSelectedOptionValues, options:options, optionsText:'name'" id="CollectionStatusIds" multiple="multiple" name="CollectionStatusIds" size="5">
    </select>
</div>
<div style="float: left; padding: 2px;" id="ko-display">
    <div data-bind="text: multipleSelectedOptionValuesDisplay"></div>
</div>

js:

var VM = function(){
    var self = this;

    self.options = [
         {name:"ACTIVE", value:1},
         {name:"ARRANGEMENT",value:2},
         {name:"ATTY INVOLVEMENT",value:16},
         {name:"BROKEN PROMISE",value:17},
         {name:"CLIENT ISSUE",value:3},
         {name:"CONSISTENT PMTS",value:23},
         {name:"UNABLE TO CONTACT",value:9},
     ];

     self.multipleSelectedOptionValues = ko.observableArray();
     self.multipleSelectedOptionValuesDisplay = ko.computed(function(){
        return ko.utils.arrayMap(self.multipleSelectedOptionValues(), function(val){
            console.log(val);
            return val.name;
        });
     }, self);
}

 ko.applyBindings(new VM());

另外,请注意它self.multipleSelectedOptionValues应该是一个 observableArray,而不是一个 observable。

于 2013-10-30T11:30:37.187 回答