如何实现一个全局函数,它可以在angular中的多个ng-click函数中使用?

How do I implement a global function that can be used across multiple ng-click functions in angular

本文关键字:函数 angular ng-click 实现 何实现 一个 全局      更新时间:2023-09-26

我有一个简单的例子:function checkIfValueIsGreaterThan0

如果我有一个ng-click函数,我可以这样使用它:

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

但是我需要在$作用域中声明这个函数。是否有一种方法可以将其添加到全局库中,可以在我的应用程序中使用,并能够注入该库并使其从我的视图中工作,而无需像在控制器中那样显式声明?

$scope.checkIfValueIsGreaterThan0 = myLibrary.checkIfValueIsGreaterThan0

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

$rootScope.checkIfValueIsGreaterThan0 = myLibrary.checkIfValueIsGreaterThan0;

由于$rootScope是应用程序中所有作用域的父级,您将能够在任何模板中使用checkIfValueIsGreaterThan0()或在任何控制器中使用$scope.checkIfValueIsGreaterThan0() .

是的,这当然是可能的,你可以从中制作一个工厂服务,并在你的应用程序中使用它。你可能需要传递$scope或$http service给你的工厂,但这取决于你想要完成什么。如果你这样做,那么你可以像我在下面的控制器中那样做

var app = angular.module( 'myApp' ,[]);
app.factory(' checkIfValueIsGreaterThan0',  function()
{
       var checkIfValueIsGreaterThan0 = {};
       checkIfValueIsGreaterThan0.test =  function()
       {
              // Do ur stuff here and return it
       }
       return checkIfValueIsGreaterThan0;
});

当你想使用这个工厂时,只要把它注入到你的控制器中并调用它,就像你说的,你想把它赋值到$作用域,你可以这样做:

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

我希望你会得到的想法,如果有任何打字错误,我很抱歉,因为我从手机下载这个