Я хотел бы добавить некоторые утилиты в мое приложение AngularJS. Например:
$scope.isNotString = function (str) {
return (typeof str !== "string");
}
Это лучший способ сделать это, чтобы добавить их в качестве службы? Из того, что я прочитал, я могу сделать это, но тогда я хотел бы использовать их на своих HTML-страницах, так что все еще возможно, если они на службе? Например, могу ли я использовать следующее:
<button data-ng-click="doSomething()"
data-ng-disabled="isNotString(abc)">Do Something
</button>
Может кто-нибудь дать мне пример того, как я мог бы добавить их. Создать сервис или есть другой способ сделать это. Самое главное, я бы хотел, чтобы эти утилиты функции в файле и не объединены с другой частью основной настройки.
Я понимаю, что есть несколько решений, но ни один из них не настолько ясен.
Решение 1 - Предлагается Urban
$scope.doSomething = ServiceName.functionName;
Проблема здесь в том, что у меня есть 20 функций и десять контроллеров. Если бы я это сделал, это означало бы добавление большого количества кода в каждый контроллер.
Решение 2 - Предлагаемый мной
var factory = {
Setup: function ($scope) {
$scope.isNotString = function (str) {
return (typeof str !== "string");
}
Недостаток этого заключается в том, что в начале каждого контроллера у меня будет один или несколько из этих вызовов установки для каждой службы, которая передала $scope.
Решение 3 - Предлагается Urban
Решение, предлагаемое городскими службами создания общего сервиса, выглядит неплохо. Здесь моя основная настройка:
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);
Должен ли я добавить общий сервис к этому и как я могу это сделать?