最佳答案
我想添加一些实用功能到我的 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个函数和10个控制器。如果我这样做,就意味着向每个控制器添加大量代码。
解决方案2 -由我提出
var factory = {
Setup: function ($scope) {
$scope.isNotString = function (str) {
return (typeof str !== "string");
}
这样做的缺点是,在每个控制器开始时,我会对每个传递 $scope 的服务进行一个或多个这样的 Setup 调用。
解决方案3 -由 Urban 提出
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);
我应该将通用服务添加到这里吗? 我如何才能做到这一点?