Pouvez-vous ignorer les modèles spécifiques dans AngularUI Bootstrap?
Je suis curieux de savoir si il existe un moyen de remplacer unique, les modèles spécifiques à partir de l'interface utilisateur-bootstrap-npt fichier. La grande majorité des modèles par défaut l'adapter à mes besoins, mais il ya un couple spécifique de ceux que j'aimerais le remplacer sans passer par tout le processus d'accaparement de tous les modèles par défaut et de les amener filaire jusqu'à la non-npt version.
- J'ai aussi trouvé moi-même la décoration de la
$modal
service pour obtenir plus de possibilités de configuration sans (espérons-le) de créer trop d'entretien des maux de tête.$provide.decorator('$modal'
... Dans mon cas, je ne voulais pas rendre lesmodalWindow
élément. Jamais. Je n'étais simplement pas l'utiliser, et c'était le mieux que je pouvais venir. J'aimerais entendre une meilleure façon, si quelqu'un en possède un.
Vous devez vous connecter pour publier un commentaire.
Oui, les directives du http://angular-ui.github.io/bootstrap sont hautement personnalisables et il est facile de remplacer l'un des modèles (et toujours compter sur les valeurs par défaut pour d'autres directives).
C'est assez pour nourrir
$templateCache
, soit de l'alimenter directement (comme le fait dans laui-bootstrap-tpls
fichier) ou - sans doute plus simple de remplacer un modèle à l'aide de la<script>
directive (doc).Un exemple artificiel où je vais changer d'alerte du modèle de swap
x
pourClose
est indiqué ci-dessous:Vivre plunker: http://plnkr.co/edit/gyjVMBxa3fToYTFJtnij?p=preview
À l'aide de
$provide.decorator
À l'aide de
$fournir
pour décorer la directive évite la nécessité d'directement déconner avec$templateCache
.Au lieu de cela, créer votre template html que vous pourriez normalement, avec le nom que vous s'il vous plaît, puis remplacer la directive
templateUrl
à point à elle.Fourche de pkozlowski.opensource's plunkr: http://plnkr.co/edit/RE9AvUwEmKmAzem9mfpI?p=preview
(Notez que vous devez ajouter de la "Directive" suffixe du nom de la directive que vous avez l'intention pour décorer. Ci-dessus, nous sommes décoration UI Bootstrap est
alert
directive, donc nous utilisons le nom dealertDirective
.)Que vous voulez faire plus que simplement remplacer le
templateUrl
, cela fournit un bon point de départ pour prolonger la directive, par exemple en substituant/conditionnement du lien ou de la compilation de la fonction (par exemple).alertDirective
un mot clé? si oui, quel est le mot clé pourTabs
? Je suis en train de faire la même chose sur les onglets, mais j'ai regardé à travers la alert.js et je ne vois pas où ils avaientalertDirective
là.$compileProvider
attache une "Directive" suffixe au nom de votre directive lorsque vous vous inscrivez (le$filterProvider
fait de même avec un "Filtre" suffixe); pour la plupart des fins, c'est invisible, mais lors de la décoration que vous aurez besoin d'ajouter ce suffixe à la directive-vous l'intention de cible. Par exemple,tabDirective
outabsetDirective
, etc. Pas exactement clairement documenté nulle part que j'ai pu trouver, mais ici, c'est une référence au comportement similaire$filterProvider
au moins: docs.angularjs.org/api/ng/provider/$filterProviderfunction(element, attributes)
à templateUrl. Vous pouvez l'utiliser pour certains comportement dynamique (retour original templateUrl fonction ou l'url de votre propre chaîne de caractères en fonction d'un attribut, etc). Cependant, l'interface utilisateur.bootstrap maintenant utilise également cette fonctionnalité pour vous permettre de fournir untemplate-url
attribut sur une directive, de sorte que vous pourrait aussi éventuellement utiliser que si vous êtes heureux de fournir le chemin d'accès du modèle directement via la directive attribut d'élément.La réponse de pkozlowski.opensource est vraiment utile et m'a beaucoup aidée! J'ai modifié à ma condition d'avoir un seul fichier de définition de l'ensemble de mes angulaire de modèle de substitutions et chargé de la JS externe pour garder la taille de la charge utile vers le bas.
Pour ce faire, allez au bas de l'angulaire de l'interface utilisateur-bootstrap source fichier js (par exemple
ui-bootstrap-tpls-0.6.0.js
) et de trouver le modèle qui vous intéresse. Copiez le bloc entier qui définit le modèle et le coller dans vos remplacements fichier JS.par exemple
Alors il suffit d'inclure vos remplacements de fichiers après l'interface de démarrage et vous obtenir le même résultat.
Fourche version de pkozlowski.opensource's plunk http://plnkr.co/edit/iF5xw2YTrQ0IAalAYiAg?p=preview
Vous pouvez utiliser
template-url="/app/.../_something.template.html"
pour remplacer l'actuel modèle de cette directive.(Travaux en Accordéon Bootstrap au moins.)