2017-09-14 37 views
0

Ich versuche, geänderte Daten zu beobachten, aber es scheint nicht zu funktionieren. Was ich tue ist das Ändern des Statusobjekts durch Redux in einem Ansichtsmodell, das dieses benutzerdefinierte Element aufruft.Aurelia DataChanged nicht in benutzerdefinierten Element ausgelöst

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { customElement, inject, bindable, noView } from 'aurelia-framework'; 

import Groups from './groups-react/groups-container.jsx'; 

@noView() 
@inject(Element) 
@bindable('state') 
@bindable('modalService') 
@bindable('childViewState') 
@customElement('groups-react-element') 

export class GroupsReactElement { 

    reactComponent = {}; 

    constructor(element) { 
    this.element = element; 
    } 

    render() { 
    this.reactComponent = ReactDOM.render(<Groups state={this.state} modalService={this.modalService} childViewState={this.childViewState}/>, this.element); 
    } 

    bind() { 
    this.render(); 
    } 

    unbind() { 
    ReactDOM.unmountComponentAtNode(this.element); 
    } 

    dataChanged(newVal) { 
    this.bind(); 
    } 
} 

Wenn ich ändere den Zustand Objekt in meinem Viewmodel (es vollständig zu ersetzen), obwohl datachanged nie in diesem kundenspezifischen Elemente ausgelöst wird.

+0

BTW, Sie sollten wahrscheinlich die 'Attached' und' detached' Callbacks für diese anstelle von 'bind' und' unbind' verwenden. –

Antwort

3

In dieser Klasse gibt es keine data Eigenschaft. Wenn Sie benachrichtigt werden möchten, wenn sich die state-Eigenschaft geändert hat, müssen Sie die Funktion stateChanged benennen.

Verwandte Themen