2013-07-30 113 views
2

我有一个使用名为CertificateDetailsToShow的可观察数组的foreachCertificateDetailsToShow有一个名为LoanNum的列。在foreach嵌套,我有一个使用名为DDABankNum S(填充选择列表选项)的observablearray选择列表。它有一个名为mLoanNum的房产。我想筛选所显示的基础上,LoanNum来自observablearrays(DDABankNums.mLoanNum = CertificateDetailsToShow.LoanNum)选择列表中。我怎样才能做到这一点?如何根据foreach observablearray属性筛选选择列表选项

我的看法代码 -

<tbody data-bind="foreach: CertificateDetailsToShow"> 
    <tr id="Tr1" style="cursor: pointer"> 
    <td> 
     <ul style="width: 100%"> 
     <h5 class="muted"><b>Loan:&nbsp;<span class="muted" data-bind="text: LoanNum"></span>&nbsp;(<span data-bind=" text: CurrType"></span>)</b> 
      <select id="Select1" style="margin-top: 0px; height: 24px; width: 160px !important" 
      data-bind="options: $parent.DDABankNums, optionsText: 'AccountName', value: $parent.mLoanNum, optionsCaption: $data.LoanNum"> 
      </select> 
     </h5> 
     </ul> 
    </td> 
    </tr> 
</tbody> 

回答

4
<tbody data-bind="foreach: CertificateDetailsToShow"> 
    <tr> 
    <td> 
     Loan: <span data-bind="text: LoanNum"></span> (<span data-bind="text: CurrType"></span>) 

     <select 
     data-bind="options: $parent.filter($parent.DDABankNums, $data.LoanNum), optionsText: 'AccountName', optionsValue: 'myDDABankNumValueAttributeName'"> 
     </select> 
    </td> 
    </tr> 
</tbody> 

视图模型包含此方法:

self.filter = function(ddaBankNums, loanNum) { 
    return ddaBankNums().filter(function(ddaBankNum) { 
     return ddaBankNum.mLoanNum == loanNum; 
    }); 
} 
+0

没有显示在上面改变你的代码后视图仍。 ddaBankNum包含20个项目,loanNum进入正常,但下拉菜单中不包含任何数据。它应该与loanNum相匹配,并在每个下拉列表中显示约2条记录,但事实并非如此。什么是错误的想法? – Chris

+0

我改变了我的答案,以配合您在解释放弃的属性名称:DDBankNum拥有财产“mLoanNum”和CertificateDetailsToShow拥有财产“LoanNum”。 –

+0

明白了!谢谢Hallvar。一个修改我不得不作出是不是回ddaBankNums.filter(函数(ddaBankNum),我用回DDABankNums()。过滤器(功能(ddaBankNum)和它的工作。 – Chris