2016-04-30 13 views
0

Ich habe erstellt und registriert ein Widget in Durandal, so dass nun dieses Markup Ich bin der Lage, es in anderen Ansichten zu verwenden:Ist es möglich, die Methoden eines benutzerdefinierten Widgets in Durandal aufzurufen?

<div data-bind="MyWidget: { activationData }" /> 

Ich möchte von der übergeordneten Ansicht Modell auf diesem Widget Methoden aufrufen, für Beispiel:

Gibt es eine gute Möglichkeit, auf ein Widget zuzugreifen, das auf diese Weise aus dem übergeordneten Ansichtsmodell besteht?

Antwort

0

Ich habe seit der Veröffentlichung der Frage zu diesem Problem gearbeitet und die beste Lösung, die ich mit gekommen sind, ist dies:

  • eine beobachtbare hinzufügen, nennen wir es „mywidget“, zu der übergeordneten Ansicht Modell
  • den Widget bei Aktivierung der leeren beobachtbaren Geben, widget Verwendung
  • Während der Aktivierung Bindung setzt das Widget der Eltern beobachtbaren sie

beispielsweise in der Ansicht Modelldefinition:

this.myWidget = ko.observable(null); 

Verwendung Widget in der übergeordneten Ansicht Bindung:

<DIV data-bind="MyWidget: { theirWidget : myWidget }" /> 

Stellen Sie die Eltern Ansicht Referenz in der des Widgets Activate-Methode:

MyWidget.prototype.activate = function(activationObject) { 

    activationObject.theirWidget(this); 

} 

Während dies eine vernünftige Lösung, ich werde abwarten und sehen, ob jemand andere eine Alternative vor ac bietet diese Antwort annehmen.