2014-09-01 66 views
0

訂閱事件掛鉤改變下拉列表事件只發射一次!! 每次審覈下拉列表項目發生更改時,我如何才能啓動它?隨着knockout.js下拉列表訂閱事件只觸發一次

的的jsfiddle代碼爲http://jsfiddle.net/ky3mkb3q/2/

HTML:

<div class="container"> 
    <h1>Load NVDs</h1> 

    <hr /> 
    <div style="margin-top:40px; margin-bottom:40px"> 
     <div style="margin-bottom:20px"> <span>Audit: </span> 

      <select data-bind="options: $root.availableAudits, optionsValue: 'auditId', optionsText: 'auditName', value: selectedAudit" /> 
     </div> 
    </div> 
</div> 

腳本:

function NVDEntriesViewModel(callback) { 
    var self = this; 

    self.nvdEntries = ko.observableArray([]); 

    self.availableAudits = []; 
    var auditYear = self.auditYear; 

    // Get available audits 
    var audits = GetAudits(auditYear, function (audits) { 
     self.availableAudits.push({ 
      id: 0, 
      auditName: '<Select Audit>' 
     }); 
     for (var i = 0; i < audits.length; i++) { 
      var audit = {}; 
      audit.id = audits[i].id; 
      audit.auditName = audits[i].Title; 
      self.availableAudits.push(audit); 
     } 

     // Set selected audit 
     self.selectedAudit = ko.observable(0); 

     self.selectedAudit.subscribe(function (newValue) { 
      if (newValue === 0 || newValue === undefined) { 
       alert('value 0 selected'); 
      } else { 
       alert('other value selected'); 
      } 
     }); 

    }); 



} 

ko.applyBindings(new NVDEntriesViewModel()); 

/* ---------------------------------------------------------- 
      Get Audits 
    ----------------------------------------------------------*/ 

function GetAudits(auditYear, callback) { 

    var result = [{ 
     Title: 'Audit 1', 
     year: 2014, 
     id: 1 
    }, { 
     Title: 'Audit 2', 
     year: 2014, 
     id: 2 
    }]; 
    callback(result); 
} 

回答

0

找到了答案: 數據綁定指出auditId而不是ID

+0

好知道。你確定現在訂閱正在工作。我曾嘗試更改爲'id',但訂閱仍然相同。 – 2014-09-01 06:33:29