In aurelia: Ich habe eine Zeichenfolge interpulation über Objekteigenschaft, die in der app.html gut funktioniert - es zeigt die Anzahl der Konten:Bindung benutzerdefiniertes Element in dem ersten Belastung
ALL ACCOUNTS (${userAccountsData.length})
In der ersten Belastung, ich sehe, dass der Wert ändert sich nach einigen Millisekunden von 0 bis zum tatsächlichen Wert (Daten werden vom Dienst abgerufen), , aber - beim Versuch, aggregierte Daten (Anzahl der aktiven Konten) über denselben Daten in einer Vorlage anzuzeigen (benutzerdefiniertes Element) die Daten bleiben als 0 und nicht aktualisiert als userAccountsData.length * Beim erneuten Laden nach dem ersten Laden - die Daten werden so angezeigt, wie sie sein sollten. Dies ist die benutzerdefinierte Elementinstanz in dem app.html:
<account-status-selection-bar accounts-data.bind="userAccountsData"></account-status-selection-bar>
Und dieser Teil des HTML-Code des benutzerdefinierten Elements selbst:
<template>
<div ref="active"
class="selection">${accountActivationDistribution.numberOfActiveAccounts}
Dies ist der relevante Teil des benutzerdefinierten Elements VM :
"use strict";
import { bindable} from 'aurelia-framework';
export class accountStatusSelectionBar {
@bindable accountsData;
constructor() {
this.accounts = [];
this.accountActivationDistribution = { numberOfActiveAccounts: 0,
numberOfInactiveAccounts : 0,
numberOfTotalAccounts : 0
}
get activeAccounts() {
var activeAccounts = this.accounts.filter(function(account) {
return account.IsApproved;
});
return activeAccounts.length;
}
attached()//bind()
{
this.accounts = this.accountsData;
this.accountActivationDistribution.numberOfActiveAccounts =
this.activeAccounts
}
In den app.js
verwende ich observerLocator - hier der Code auf dem Arbeitsteil von userAccountsData.length bezogen ist:
constructor() {
this.userAccountsData = [];
....
this.subscribe = this.observerLocator.getObserver(accounts, "all")
.subscribe((value) => {
if (!value)
return;
this.userAccountsData = value;
** Eine Arbeit, die ich fand (obwohl ich nicht sicher bin, ob das der beste Weg ist) ist, die Aggregation in der app.js (im Observer-Teil) in Objekt zu tun und das bereits aggregierte Objekt zu binden zum benutzerdefinierten Element - das funktioniert. Ich suche immer noch nach der oben genannten Lösung.