Ich verwende Typescript mit KnockoutJs und ich habe Probleme mit der Bindung der Optionen Text und OptionenWert. Das Modell ist:KnockoutJs Bindungsproblem in der Auswahlliste
export interface LanguageProxy {
ID: number;
Name: string;
Code: string;
IsSparse: boolean;
HasAudio: boolean;
ReadsRightToLeft: boolean;
IsAsian: boolean;
ShortCode: string;
LongCode: string;
CultureCode: string;
IsEnabled: boolean;
IsCustom: boolean;
}
wir die Bindung als (Antwort eine Antwort von einem Webservice-Aufruf ist) einrichten:
var langs = ko.observableArray([]);
response.LanguageProxyListResult.forEach(lang => {
langs.push(ko.observable(lang));
});
this.Languages = langs;
ko.applyBindings(this, jQuery("#QuickSearchContainer")[0]);
und wir sind verbindlich den folgenden HTML verwenden unter:
<select name="ddlLanguage" id="ddlLanguage" class="LanguageList"
data-bind="options: Languages,
optionsText: 'Name',
optionsValue: 'ID',
optionsCaption: 'Choose...',
optionsAfterRender: function (e) { jQuery('#ddlLanguage')[0].selectedIndex = 1;}">
</select>
Die Daten werden korrekt gebunden. Wenn Sie die Optionen text und optionsValue entfernen, wird die Liste von [object] [OBJECT] zurückgegeben, aber beim Hinzufügen der Eigenschaften von optionsText und value wird eine leere Liste erstellt.
Betrachtet man einen Kontext-Debugger von knockoutJS für chrome, erscheinen die Daten korrekt im Element (unter $ data.Languages.Symbol (_latestValue) und dem analysierten Kontext). Gibt es etwas grundsätzlich falsch?
Das funktionierte, ich danke Ihnen, das Problem zu erklären, ich lerne immer noch den Rahmen. –