淘汰赛可观察阵列+选择框

问题描述:

我想在可观察数组的选择框上设置选项。我可以得到填充的选项,但数组显示为一个选项,现在没有任何价值,我看它。淘汰赛可观察阵列+选择框

这里是fiddle和代码如下:

var Model = function (properties) { 
    this.AvailableLenders = ko.observableArray(); 

    this.ModifyLenders = function (newProperties) { 
     var lenders = [], 
      count = 0; 

     ko.utils.arrayForEach(newProperties || properties, function (item) { 
      var lender = item.Lender; 

      if (lender) { 
       if (lenders.indexOf(lender) == -1) { 
        lenders[count] = lender; 

        count++; 
       } 
      } 
     }); 

     this.AvailableLenders.removeAll(); 

     return this.AvailableLenders.push(lenders.sort()); 
    }; 

    this.ModifyLenders(); 
}; 

ko.applyBindings(new Model([{Lender: "ASB"}, {Lender: "ANZ"}])); 

HTML:

<select multiple="multiple" name="Lender" id="Lender" data-bind="options: AvailableLenders, optionsCaption: 'Please select a lender'"></select> 

我发现这个问题。

问题是你正在推动贷方阵列中的的AvailableLenders阵列

var Model = function (properties) { 
this.AvailableLenders = ko.observableArray(); 

this.ModifyLenders = function (newProperties) { 
    var lenders = [], 
     count = 0; 

    ko.utils.arrayForEach(newProperties || properties, function (item) { 
     var lender = item.Lender; 

     if (lender) { 
      if (lenders.indexOf(lender) == -1) { 
       lenders[count] = lender; 

       count++; 
      } 
     } 
    }); 

    this.AvailableLenders.removeAll(); 

    console.log("lenders ", lenders) 
    console.log("lenders.sort() ", lenders.sort()) 

单个索引I的变化以下进行。现在,你可以理解为什么它正在发生

在你的提琴添加这两条线,并检查所发生的事情

this.AvailableLenders.push(lenders[0]); 
    this.AvailableLenders.push(lenders[1]); 
    return this.AvailableLenders.push(lenders.sort()); 
    }; 

    this.ModifyLenders(); 
    }; 

ko.applyBindings(new Model([{ 
    Lender: "ASB" 
}, { 
    Lender: "ANZ" 
}])); 

将其标记为答案

+1

啊是的,很好的一个!谢谢解决我的问题! – Colin 2013-02-22 19:28:28