挂钩以更改下拉列表事件的订阅事件仅触发一次!! 每次审计下拉列表项目发生更改时,如何触发它?
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 :(得分:0)
找到答案: data-bind指向auditId而不是id