Je voudrais ajouter quelques fonctions utilitaires pour mon application AngularJS. Par exemple:
$scope.isNotString = function (str) {
return (typeof str !== "string");
}
Est la meilleure façon de le faire pour les ajouter en tant que service? De ce que j'ai lu que je peux faire mais ensuite, je voudrais de les utiliser dans mes pages HTML ainsi est-il encore possible si ils sont dans un service? Par exemple puis-je utiliser les éléments suivants:
<button data-ng-click="doSomething()"
data-ng-disabled="isNotString(abc)">Do Something
</button>
Quelqu'un peut-il me donner un exemple de la façon dont je pourrais ajouter ces. Dois-je créer un service ou est-il un autre moyen de le faire. Le plus important, je voudrais que ces utilitaire les fonctions dans un fichier et non en combinaison avec une autre partie de l'ensemble principal.
Je comprends, il y a plusieurs solutions, mais aucune n'est aussi clair.
Solution 1 - Proposé par Urban
$scope.doSomething = ServiceName.functionName;
Le problème ici c'est que j'ai 20 fonctions et dix contrôleurs. Si j'ai fait ceci, cela signifie l'ajout de beaucoup de code pour chaque contrôleur.
Solution 2 - Proposé par moi
var factory = {
Setup: function ($scope) {
$scope.isNotString = function (str) {
return (typeof str !== "string");
}
L'inconvénient de cette est que, au début de chaque contrôleur, j'aurais un ou plusieurs de ces appels d'Installation pour chaque service qui a passé l' $champ d'application.
Solution 3 - Proposé par Urban
La solution proposée par la croissance urbaine, de la création d'un service générique semble bon. Voici mon jeu principal:
var app = angular
.module('app', ['ngAnimate', 'ui.router', 'admin', 'home', 'questions', 'ngResource', 'LocalStorageModule'])
.config(['$locationProvider', '$sceProvider', '$stateProvider',
function ($locationProvider, $sceProvider, $stateProvider) {
$sceProvider.enabled(false);
$locationProvider.html5Mode(true);
Dois-je ajouter le service générique de ce et comment pourrais-je le faire ?