0
我試圖在下拉列表中預選一個值。我正在使用KnockoutJS並調用web服務將值推入我的列表。但是,我無法預先選擇我想要的值。非常感謝您的幫助。我也注意到沒有顯示放置在ko.utils.arrayFirst中的警報。謝謝!在下拉列表中預選值(選擇)KnockoutJS
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/platform/vendors.asmx" />
<asp:ServiceReference Path="~/platform/checkBooks.asmx" />
</Services>
</asp:ScriptManager>
</form>
<div>
<p>
Checkbooks:
<select data-bind="options: cb, value: choice, optionsText: 'name'"></select>
</p>
</div>
<script type="text/javascript">
function errorHandler(errorObject) {
var errType = errorObject._exceptionType;
var errMsg = errorObject._message;
window.alert("ERROR" + errType + ":" + errMsg);
return false;
}
ko.observableArray.fn.find = function (prop, data) {
var valueToMatch = data[prop];
return ko.utils.arrayFirst(this(), function (item) {
return (item[prop] === valueToMatch);
});
};
function viewModel() {
var self = this;
self.cb = new ko.observableArray([]);
self.call = function() {
try {
checkBooks.list("accounting", 2, "name:", self.retCheckBooks, errorHandler);
}
catch (ex) {
alert(ex.message);
}
}
self.retCheckBooks = function (results) {
for (var i = 1; i <= results.length; i++) {
self.cb.push({ id: i, name: results[i].shortName });
}
}
var choice = { id: 4, name: "VCSTPAY" };
self.choice = ko.observable(self.cb.find("id", choice));
}
</script>
<script type="text/javascript">
$(document).ready(function() {
vm = new viewModel();
vm.call();
ko.applyBindings(vm);
});
</script>
你可以粘貼一個asmx文件輸出的樣本嗎?沒有它,我只是'checkBooks是未定義的'。 – woz
嗨, 該webservice是一個非常大的文件,我指的是其中的其他cs文件。如果我嘗試把所有這些都放在這裏,它會令人困惑,而且非常大。我會看看我是否可以用更簡單的web服務發佈更好的示例。感謝您的關注。 – user1288906
我不是指代碼。我只想在'checkBooks'中加入一些東西來測試你的JavaScript。 – woz