2015-04-16 4 views
1

J'ai un gros problème. Je veux utiliser le navigateur et le menu coulissant. Ensuite, j'ai besoin d'avoir un comportement sur postpush.Onsen - navigateur et menu coulissant - fonction sur prepush ne fonctionne pas

Ceci est mon exemple codepen:

http://codepen.io/anon/pen/zxgpVo

Si vous restez dans la maison et de naviguer à partir de ce point, vous voyez le console.log. Mais si vous changez du menu coulissant et allez à Produits, alors le fichier console.log ne fonctionne pas et si vous revenez dans Home ne fonctionne plus ici.

Je crée 2 navigateurs avec le même nom. C'est une bonne chose? Peut-être que cela peut être le problème?

<ons-template id="home.html"> 
    <ons-navigator page="page0.html" var="myNav"></ons-navigator> 
</ons-template> 

<ons-template id="products.html"> 
    <ons-navigator page="page_products.html" var="myNav"></ons-navigator> 
</ons-template> 

Je n'arrive pas à comprendre comment créer un exemple de travail.

J'espère que quelqu'un peut m'aider.

Merci!

Répondre

1

Je vais essayer d'expliquer ce qui se passe là-bas (ou, du moins, ce que je comprends):

La racine de votre projet est un ons-sliding-menu puis vous avez deux Childs, une par entrée de menu (accueil et produits). Chaque enfant est un ons-navigator avec le même nom, mais cela ne devrait pas importer puisqu'ils ne seront pas "vivants" en même temps. Lorsque vous êtes à la maison et utilisez menu.setMainPage('products.html') vous tuez maison « navigateur s et la création produit » navigateur s. Vos événements fonctionnent seulement au tout début parce que vous les associez au navigateur de la maison sur ons.ready()seulement la première fois. Par conséquent, lorsque vous utilisez setMainPage, vous détruisez le navigateur qui a ces événements, et les nouveaux navigateurs ne les auront pas. Au lieu d'associer les événements au navigateur sur ons.ready, vous pouvez spécifier les événements postpush/prepush dans la création du navigateur lui-même. Il y a des attributs à faire qui sont expliqués dans les documents: http://onsen.io/reference/ons-navigator.html#attributes

Espérons que ça aide!

+0

J'ai mis à jour mon codepen. J'ai une question: puis-je mettre une fonction dans l'attribut du navigateur? Si vous voyez l'exemple, la maison ne fonctionne pas mais les produits fonctionnent bien. Merci – fraymas

+1

Les expressions sont analysées dans AngularJS, donc il admettra seulement les variables de $ scope d'Angular: /. Vous pouvez vérifier ici comment cela fonctionne: http://codepen.io/frankdiox/pen/QwePKV –

+1

Avec jQuery et Onsen UI 1.3.0, vous pouvez faire quelque chose de similaire: '$ (document) .on ('ons-navigator : prepush ',' ons-navigator ', function (événement) { console.log ("Poussé!"); }); ' –