2016-11-18 6 views
1

Ich versuche zu verstehen, wie man einen Beobachter innerhalb einer Polymer-Komponente innerhalb von attached() und detached() -Ereignissen ein- und ausschalten kann, so dass er erst nach dem Anhängen des Elements beginnt, zu beobachten. Irgendwelche Ideen?Wie setze ich einen Beobachter in Polymer?

Antwort

2

Momentan gibt es keine öffentliche API, um Beobachter zwingend hinzuzufügen (aber eine private existiert) und keine API, um sie zu entfernen. Die private Funktion _addComplexObserverEffect(...) erstellt einen Beobachter für eine oder mehrere Eigenschaften. Diese Funktion verarbeitet jeden Beobachterausdruck im Array observers des Polymers. Beachten Sie den Vorbehalt, eine private Funktion zu verwenden, da sie in der nächsten Version unbrauchbar sein könnte.

Man könnte es wie folgt verwenden:

Polymer({ 
    ..., 

    properties: { 
    foo: String 
    }, 

    attached: function() { 
    this._addComplexObserverEffect('_fooChanged(foo)'); 
    }, 

    _fooChanged: function(foo) { ... } 
}); 

codepen

+0

Gibt es Pläne, dies in Zukunft tun zu können? Eine öffentliche Set- und Unset-Methode? –

2

Wenn Sie n Dynamik haben keine private Methode und es ist nur eine Frage der Zeit und keinen Bedarf verwenden möchten Beobachter, setzen Sie einfach eine Stütze, sobald das Element angefügt ist, fügen Sie diese Stütze dem Beobachter hinzu und führen Sie nur aus, wenn es angebracht wird.

Polymer({ 
    is: 'my-el', 
    properties: { 
     bar: String, 
     attached: { 
     type: Boolean, 
     value: false 
     } 
    }, 
    observers: [ 
     '_barChagned(bar, attached)' 
    ], 
    _barChagned: function(bar, att) { 
     if(!att) return; 
     // Do your stuff 
    }, 
    attached: function() { 
     this.set('attached', true); 
    } 
    }); 
Verwandte Themen