11
votes

Angularjs / UI - Entrée de discussion dans les boîtes de dialogue

Y a-t-il un moyen de définir la mise au point dans les contrôles d'entrée à l'aide d'angularjs / angular-ui?

J'ai vu que l'UI angulaire a une certaine directive JQ-UI = mise au point, mais je ne suis pas en mesure de le faire fonctionner.

J'ai quelques dialogues que j'ai affichées à l'aide d'un service de dialogue UI $ UI $ et j'aimerais vraiment que la première entrée de chaque boîte de dialogue soit mise au point une fois qu'il est montré


2 commentaires

Pouvez-vous fournir un jsfiddle?


Vous êtes manquant d'une rafraîchissement de l'UI


4 Réponses :


-5
votes

La dernière version de angularjs offre ng-focus : http://docs.angularjs.org/api/ng/directive/ngfocus


3 commentaires

ne fonctionne pas pour moi, la valeur passée dans la fonction de surveillance de la directive est juste une chaîne, par exemple. 'FocusInput' pas la valeur évaluée de FocusInput. Quelque chose doit être faux?


Ne fonctionne pas pour moi non plus. Aucune étant jetée, rien ne se passe.


C'est un rappel pour quand un champ est axé sur.



0
votes

Vous avez raison, j'ai montré des démos sur la façon dont vous pouvez appeler la méthode JQuery.fn.focus> jquery.fn.focus () sur un élément DOM, car c'est tout ui-jq fait vraiment. L'astuce consiste à tirer plusieurs fois, et au bon moment.

ui-jq exécute déjà la méthode pour vous à l'intérieur d'un $ Timeout , cependant, par défaut, il ne tire qu'une seule fois, lorsque l'élément DOM est créé. Afin de faire ui-jq incendie plusieurs fois, ajoutez simplement ui-rafraîchissement = "SOMExpression" et utilisez une expression que vous savoir changera chaque fois que le modal ouvre. Il va bien s'il rec soit à la fois lorsque le modal est fermé aussi, .focus () ne fera rien si l'élément DOM n'est pas visible.

Donc, pour le Modal Ui-Bootstrap, mettez simplement la même expression que vous utilisez à l'intérieur du modal = "SOMEXPRESSPRESSION" et vous devez être défini.


0 commentaires

10
votes

s'avère que tout ce dont vous avez besoin est de cela si vous l'utilisez si vous l'utilisez avec le service de dialogue UI $ angulaire $: xxx

html: xxx

Comme indiqué, c'est pour le service de dialogue d'UI $ angulaire seulement.

voir vivre ici: http: // forcetracker .apphb.com (cliquez sur Connexion ou Inscrivez-vous pour afficher les dialogues)


6 commentaires

Comment définir la mise au point sur les boutons de pied de page. Je ne suis vraiment pas capable de le faire .. j'ai besoin de fermer $ dialog.messagebox si la touche Entrée est enfoncée.


Ajouter une balise autour des commandes + bouton de votre boîte de dialogue


Ce lien semble être mort.


Veuillez continuer ce lien, même si je veux savoir comment ajouter le bouton de focataire. Même problème que ce que Saurabh a demandé ci-dessus


FYI fonctionne également avec $ modal de service en angulaire qui est ce que $ dialog a été refacturé dans des versions ultérieures de l'interface utilisateur angulaire


Pourquoi la nécessité de $ de délai d'attente?



19
votes

J'ai utilisé l'attribut standard autofocus code> dans mon modèle et a déclaré une simple directive pour le faire fonctionner pour des éléments créés après la charge de page (comme des boîtes de dialogue dans votre cas).

app.directive('autofocus', function () {
  return {
    restrict: 'A',
    link: function (scope, element) {
      element[0].focus();
    }
  };
});


3 commentaires

D'accord. Belle solution simple qui fonctionne bien. Je viens de l'ajouter à un popup Ngdialog et cela fonctionnait parfaitement. Merci!


Noob ici, excuses: qu'est-ce que restreint: 'a' faire?


@ Travis-Heeter: Cela signifie que la directive sera utilisée comme un attribut, pas un élément. Voir docs.angularjs.org/guide/directive#directive-Types