2016-04-30 2 views
0

J'ai créé et enregistré un widget dans Durandal, maintenant je peux l'utiliser dans d'autres vues en utilisant ce balisage:Est-il possible d'appeler des méthodes de widget personnalisées dans Durandal?

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

Je voudrais appeler des méthodes sur ce widget à partir du modèle de vue parent, pour Exemple:

ParentViewModel.prototype.buttonClick = function() { 

    this.myWidget.doSomething(); 

} 

Existe-t-il une manière simple d'accéder à un widget composé de cette manière à partir du modèle de vue parent?

Répondre

0

Je travaille sur ce problème depuis l'affichage de la question, et la meilleure solution que je suis venu avec est ceci:

  • Ajouter une observable, appelons-le « MyWidget », à la vue parent modèle
  • passer le vide observable au widget lors de l'activation, en utilisant un widget de liaison
  • Lors de l'activation, le widget fixe observable du parent se

Par exemple, dans la vue Définition du modèle:

this.myWidget = ko.observable(null); 

widget utilisation obligatoire dans la vue parent:

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

Définir référence de la vue parent dans la méthode activate de Bidule :

MyWidget.prototype.activate = function(activationObject) { 

    activationObject.theirWidget(this); 

} 

Bien que ce soit une solution raisonnable, je vais attendre et voir si quelqu'un d'autre fournit une alternative avant ac cepting cette réponse.