如何实现可以在角度中的多个ng-click函数中使用的全局函数

时间:2016-06-27 23:49:02

标签: javascript angularjs

我有一个简单的例子function checkIfValueIsGreaterThan0

如果我有ng-click功能,我可以这样使用它:

<div ng-click="checkIfValueIsGreaterThan0()"></div>

但是我需要在我的$ scope中声明这个函数。有没有办法将它添加到可以在我的应用程序中使用的全局库,并能够注入该库并使其在我的视图中工作,而不必在我的控制器中明确声明它?

$scope.checkIfValueIsGreaterThan0 = myLibrary.checkIfValueIsGreaterThan0

2 个答案:

答案 0 :(得分:0)

在你的应用程序引导程序中,在运行或配置块中,将其设置在$rootScope上(它本身应该被注入):

$rootScope.checkIfValueIsGreaterThan0 = myLibrary.checkIfValueIsGreaterThan0;

由于$rootScope是应用程序中所有范围的父级,因此您可以在任何模板中使用checkIfValueIsGreaterThan0()或在任何控制器中使用$scope.checkIfValueIsGreaterThan0()

答案 1 :(得分:0)

是的,它肯定是可能的,你可以从中提供工厂服务并在你的应用程序中使用它。您可能需要将$ scope或$ http服务传递给您的工厂,但这取决于您要完成的任务。如果你这样做,那么你可以像我在下面的控制器中那样做。

var app = angular.module( 'myApp' ,[]);

app.factory(' checkIfValueIsGreaterThan0',  function()
{
       var checkIfValueIsGreaterThan0 = {};

       checkIfValueIsGreaterThan0.test =  function()
       {
              // Do ur stuff here and return it
       }

       return checkIfValueIsGreaterThan0;
});

当你想使用这个工厂时,只需将它注入你的控制器并调用它,正如你所说,你将它分配给$ scope你可以这样做。

app.controller( 'myCtrl' , ['$scope', 'checkIfValueIsGreaterThan0', function($scope, checkIfValueIsGreaterThan0)
{ 
        $scope.whatever = checkIfValueIsGreaterThan0.test();
}]);

我希望你能得到这个想法,如果有任何拼写错误,我很抱歉,因为我试图从移动设备上试一试。