Ich habe die folgende Komponente:Aurelia Auswahl nicht korrekt Bindung
import {inject, customElement, bindable} from 'aurelia-framework';
import {I18N} from 'aurelia-i18n';
import {Router} from 'aurelia-router';
import {HubFactory} from 'service';
import {hub} from 'enums';
@customElement('language-switcher')
@inject(Element, I18N, Router, HubFactory)
export class LanguageSwitcher {
languageMatcher = (a, b) => {console.log(a,b); a.id === b.id;}
@bindable languages = [];
@bindable selectedLanguage = {};
constructor(element, i18n, router, hubFactory) {
this.element = element;
this.i18n = i18n;
this.router = router;
this.usmHub = hubFactory.getHub(hub.usersSessionManagementHub);
}
switchLanguage() {
...
}
}
mit der folgenden Vorlage:
<template>
<form role="language" class="navbar-form navbar-left m-t-1">
<div class="input-group">
<select value.bind="selectedLanguage" change.delegate="switchLanguage()" matcher.bind="languageMatcher" class="form-control">
<option repeat.for="language of languages" model.bind="language">${language.shortName}</option>
</select>
</div>
</form>
</template>
, die wie dies in der übergeordneten Ansicht verwendet wird:
<language-switcher languages.bind="languages" selectedLanguage.bind="selectedLanguage"></language-switcher>
Das Problem, das ich habe, ist, dass die Auswahl nicht die selectedLanguage als die standardmäßig ausgewählte Option und im Matcher-Spaß verwendet ction protokolliert stattdessen das leere Standardobjekt für b. Das Objekt wird ordnungsgemäß protokolliert.
In der übergeordneten VM sowohl die Sprachen und die SelectedLanguage werden wie folgt berechnet und sowohl einen Wert zurückgeben, wenn ich sie überprüfen:
get languages() {
return this.session.getSupportedLanguages();
}
get selectedLanguage() {
return this.session.getDefaultLanguage();
}
Die Sprachen richtig bevölkert bekommen, aber die gewählte Sprache nicht. Beide Methoden im Sitzungsobjekt zeigen auf dasselbe Array. Bitte geben Sie an, was ich falsch mache.
Jede Sprache hat eine ID-Eigenschaft.
Vielen Dank im Voraus
Vielen Dank, Jeremy. Ich habe es gestern zur Arbeit gebracht, aber die zusätzlichen Informationen sind sehr hilfreich. – cBozz