Dois-je créer un nouveau panneau pour chaque page?
Je voudrais utiliser un Panneau dans un jqm site pour mon choix de la Langue composant. De sorte que l'élément doit être présent sur chaque page. Voici le programme d'installation pour un panneau.
de jquerymobile.com ( ... j'ai ajouté un bouton d'en-tête)
<div id="mypanel" data-role="panel" >
<!-- panel content goes here -->
</div><!-- /panel -->
<div id="myheader" data-role="header" >
<a id='panel_toggle' data-role='button'>choose language</a>
</div><!-- /header -->
<!-- content -->
<!-- footer -->
</div><!-- page -->
Je me dis que j'ai 3 solutions:
-
A - créer une copie du panneau sur chaque page
---- ce ne sera pas un problème si l'état sur page_N modifications, puis tous les autres auront besoin d'être synshronized -
B - créer un seul panneau qui est pro-grammaticalement déplacé sur les changements de page
---- cela semble être un hack -
C - découvrir si jqm a déjà une solution à ce problème
---- donc je me suis poser la question 🙂
Ne jqm avoir un moyen pour déplacer un Panneau de page en page?
Vous devez vous connecter pour publier un commentaire.
Votre meilleur plan d'action est de créer dynamiquement un panneau pour chaque page.
Je vous ai fait un exemple de travail: http://jsfiddle.net/Gajotres/pZzrk/
Quelques descriptions:
jQuery Mobile, les développeurs ont déclaré que, dans la prochaine version majeure du panneau de widget n'aurez plus besoin de faire partie d'une page, au lieu de cela, il sera placé dans un même niveau, comme une page de div. Alors, un panneau ne sera nécessaire. Malheureusement, vous aurez besoin de créer dynamiquement elle.
Voici la solution que j'ai trouvé. - Je stocker le contenu du panneau caché dans un div, et de reporter le jquery mobile de l'initialisation. Lorsque le document est chargé, j'ai ajouter le contenu du panneau de chacun des (jqm) éléments de la page et ensuite initialiser jqm. La seule performances d'accès se produit lorsque la page se charge.
HTML:
Script:
J'ai lutté avec moi-même, et voici la solution que j'utilise:
Le truc semble être d'utiliser .remove() au lieu de .detach() pour ramasser le panneau que vous souhaitez déplacer sans stockées jQuery objets - de sorte que jQuery Mobile n'est pas de faire des hypothèses sur le balisage. Aussi, il me semble que cette solution ajoute beaucoup de frais généraux de manipulation du DOM. Ce n'est pas idéal, mais ça fonctionne.
EDIT: a Noter qu'il est mis en place pour travailler pour chaque page, et est tiré sur le chargement de la première page, où vous avez vraisemblablement le menu pour commencer et où il n'y a pas de page précédente de l'objet. Mais vous avez probablement pu garder le menu d'ailleurs, et de regarder pour cela il y a aussi comme une solution de repli.
avec l'inspiration de Gajotres et la façon AppFramework poignées de panneaux, j'ai fait cette. Il fonctionne en copiant défini panneaux à la page active, les panneaux sont définis par id en droit du panneau et le panneau de gauche d'attributs pour la page div:
Faire une page comme ceci:
et placez les panneaux quelque part en dehors de la page, et de les cacher comme ceci:
Panneau est un nouveau concept introduit dans 1.3. Donc espérons que plus de tutoriels seront bientôt. Comme de votre problème, je suppose qu'il vaut mieux que vous code un panneau dans chacune de vos pages. Vous pouvez apporter des modifications à votre page en temps réel, mais assurez-vous d'appeler la méthode suivante comme indiqué dans la documentation.
Je ne suis pas sûr d'autres façons serait faisable.
panels
sont enveloppés à l'intérieur des pages. donc, je pense que ce serait la bonne idée, bien que u besoin d'écrire panneau div plusieurs fois. Prendre boutons sur l'en-tête pour un exemple. Vous dur code html de bouton de retour à chaque fois dans l'en-tête. Simplement juste comme çasessionStorage
oulocalStorage
et pendantpageshow
événement, rendez-vous le stockage et mettre en évidence ou faire n'importe quoi dans le panneau??J'ai eu le même problème et s'est terminée à l'aide de iframe à la charge de la persistance de l'contenent (dans mon cas, un système sophistiqué de formulaire de recherche) à partir d'un fichier:
sform.html envoie un message à la page principale, chaque fois que l'utilisateur a soumis un des critères de recherche comme:
et la page principale de l'appréhende comme ça:
Je sais c'est bizarre, mais ça fonctionne
"Un groupe ne peut pas être placé en dehors de la page, mais cette contrainte sera supprimée dans une version future."
(À partir de http://view.jquerymobile.com/1.3.1/dist/demos/widgets/panels/ )
Cette capacité semble être la clé pour le rendre plus utile, et pratique l'ensemble de l'application appareil de navigation.
Pour le groupe, en-tête et pied de page, j'ai créer un modèle (j'utilise dustjs) pour chaque élément. Dans le
pagebeforecreate
événement, j'ai ajouter le code html sur la page en cours. Vous devez utiliserpagebeforecreate
événement si vous souhaitez JQM à "améliorer" le html. Si vous ne vous inquiétez pas à ce sujet, vous pouvez utiliser la pagecreate de l'événement.J'étais avec ce problème pendant l'été à l'aide d'un seul modèle de page.
Je veux seulement avoir une div avec l'id de menu et de l'avoir à ajouter dans toutes les pages du seul modèle de page.
Mon menu du panneau à quoi ressemble le code:
Et mon code JS est:
});
Ce code fonctionne parfaitement et je suis heureuse de trouvé la réponse à mon problème que j'ai été à la recherche de deux heures ou plus.
Commentaire si travaillé.
Accueille à partir de Espagne
Mon approche est similaire à d'autres réponses ici, mais suffisamment différentes pour justifier un post.
Dans mon multipage projet de construire ma nav panneau dans la première page comme ceci:
Puis dans d'autres pages, j'ai ajouter un div avec un nom de classe de l'identifier:
Puis sur le pagebeforecreate cas de la première page de l'application que je clone de la valeur liquidative du panneau et de le remplacer tous les conteneurs enfants avec elle:
Dans Jquery 1.4.4 vous pouvez simplement utiliser:
Cela fonctionne sur mon mobile de projet web pour la classe et mon Applications Web Mobiles Enseignant juste nous a montré aujourd'hui.
Voir la Jquery Mobile Application Web
le reste de la page de code est: