J'essaie de présélectionner une valeur dans une liste déroulante. J'utilise KnockoutJS et appelle un webservice pour pousser des valeurs dans ma liste. Cependant, je suis incapable de présélectionner la valeur que je veux. Votre aide est tres apprecie. J'ai également remarqué qu'une alerte placée dans ko.utils.arrayFirst n'est pas affichée. Merci!Présélectionnez la valeur dans une liste déroulante (select) 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>
Pourriez-vous coller un exemple de la sortie des fichiers asmx? Sans cela, j'ai juste 'checkBooks is undefined'. – woz
Salut, Le webservice est un très gros fichier et je parle de quelques autres fichiers cs à l'intérieur. Ce sera déroutant et extrêmement grand si j'essaye de mettre tout cela ici. Je vais voir si je peux donner un meilleur exemple avec un webservice plus simple. Merci d'avoir regardé ça. – user1288906
Je ne parle pas du code. Je veux juste quelque chose à mettre dans 'checkBooks' pour tester votre JavaScript. – woz