2013-07-30 3 views
0

옵션 목록에 knockout databinding을 사용하는 선택 목록이 있습니다. 뷰가로드 될 때 아무것도 표시되지 않지만 목록이 바인딩 된 obervablearray DDABankNums에 데이터가 있습니다. 여기foreach에 목록을 채우지 않을 목록을 선택하십시오.

내 선택 목록 -이다

   <select id="Select1" style="margin-top: 0px; height: 24px; width: 160px !important" 
        data-bind="value: DDABankNums().LoanNum, optionsText: DDABankNums().AccountName, optionsCaption: 'Select...', optionsValue: DDABankNums().LoanNum"> 
       </select> 

의 ViewModel 코드 -

define(['services/logger', 'durandal/system', 'durandal/plugins/router', 'services/CertificateDataService'], 
function (logger, system, router, CertificateDataService) { 
    var allCertificates = ko.observableArray([]); 
    var myCertificates = ko.observableArray([]); 
    var isSelected = ko.observable(); 
    var serverSelectedOptionID = ko.observable(); 
    var filter = ko.observable(0); 
    var CertificateDetails = ko.observableArray([]); 
    var DDABankNums = ko.observableArray([]); 

    var CertificateDetailsToShow = ko.computed(function() { 
     GetCertificateDetails(); 

     return ko.utils.arrayFilter(CertificateDetails(), function (CertD) { 
      return CertD.CertificateID == filter(); 
     }); 
    }); 

    var serverOptions = [ 
    { id: 1, name: 'Certificate', OptionText: 'lwCertID' }, 
    { id: 2, name: 'Client Name', OptionText: 'clientName' }, 
    { id: 3, name: 'Client Number', OptionText: 'clientNumber' }, 
    { id: 4, name: 'Request Date', OptionText: 'requestDate' }, 
    { id: 5, name: 'Collateral Analyst', OptionText: 'userName' } 
    ]; 

    var activate = function() { 
     // go get local data, if we have it 
     return SelectAllCerts(), SelectMyCerts(), CertificateDetailsToShow(), GetDDABankNums(); 

    }; 


    var vm = { 
     activate: activate, 
     ResetFilter: ResetFilter, 
     filter: ko.observable(), 
     allCertificates: allCertificates, 
     myCertificates: myCertificates, 
     CertificateDetails: CertificateDetails, 
     CertificateDetailsToShow: CertificateDetailsToShow, 
     DDABankNums: DDABankNums, 
     title: 'Certificate Approvals', 
     SelectMyCerts: SelectMyCerts, 
     SelectAllCerts: SelectAllCerts, 
     theOptionId: ko.observable(1), 
     serverOptions: serverOptions, 
     serverSelectedOptionID: serverSelectedOptionID, 
     SortUpDownAllCerts: SortUpDownAllCerts, 
     isSelected: isSelected, 
     selectThing: function (row, event) { 
      filter(row.lwCertID); 
      isSelected(row.lwCertID); 
     } 

    }; 



    serverSelectedOptionID.subscribe(function() { 
     var sortCriteriaID = serverSelectedOptionID(); 
     allCertificates.sort(function (a, b) { 
      var fieldname = serverOptions[sortCriteriaID - 1].OptionText; 

      if (a[fieldname] == b[fieldname]) { 
       return a[fieldname] > b[fieldname] ? 1 : a[fieldname] < b[fieldname] ? -1 : 0; 
      } 

      return a[fieldname] > b[fieldname] ? 1 : -1; 

     }); 

    }); 

    return vm; 

    function GetDDABankNums() { 
     return CertificateDataService.getDDABankNums(DDABankNums); 
    } 

    function ResetFilter() { 
     filter(0); 
     isSelected(false); 
    } 

    function GetCertificateDetails() { 
     return CertificateDataService.getCertDetails(CertificateDetails); 
    } 

    function SortUpDownAllCerts() { 
     allCertificates.sort(); 
    } 


    function SelectAllCerts() { 
     return CertificateDataService.getallCertificates(allCertificates); 
    } 

    function SelectMyCerts() { 
     return CertificateDataService.getMyCertificates(myCertificates); 
    } 


}); 

왜 목록을 채우는되지

? 이 당신을 도울 것입니다 []

희망을 추가

var allCertificates = ko.observableArray(); 

ko.observableArray() 자체 배열 필요가 없습니다 :

답변

0
은 녹아웃에

var allCertificates = ko.observableArray([]); 

바인딩 변경

.

+0

나는이 질문에 완전히 젖었습니다. 코드를 업데이트했습니다. DDABankNums observablearray가 연결되었습니다. 혼란을 드려 죄송합니다. 데이터가 여전히 표시되지 않으며 제안 된대로 []을 (를) 삭제했습니다. 감사. – Chris

1

목록의 데이터 바인딩 특성에 "옵션"바인딩이 없습니다. optionsTest, optionsValue 등이 있지만 옵션 (누락 된)은 실제로 선택 목록에 데이터를 채 웁니다.

관련 문제