簡體   English   中英

如何實現可在angular中跨多個ng-click函數使用的全局函數

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

我有一個簡單的示例function checkIfValueIsGreaterThan0

如果我具有ng-click函數,則可以這樣使用它:

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

但是然后我需要在$ scope中聲明此函數。 有沒有一種方法可以將其添加到可在我的應用程序中使用的全局庫中,並且能夠注入該庫並使它從我的角度運行而不必像在控制器中那樣顯式聲明它?

$scope.checkIfValueIsGreaterThan0 = myLibrary.checkIfValueIsGreaterThan0

在您的應用程序引導程序中,在運行或配置塊中,將其設置在$rootScope (應自行注入)上:

$rootScope.checkIfValueIsGreaterThan0 = myLibrary.checkIfValueIsGreaterThan0;

由於$rootScope是應用程序中所有范圍的父級,因此您將可以在任何模板中使用checkIfValueIsGreaterThan0()或在任何控制器中使用$scope.checkIfValueIsGreaterThan0()

是的,這絕對是可能的,您可以使用它進行出廠服務並在您的應用程序中使用它。 您可能需要將$ 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;
});

當您想使用此工廠時,只需將其注入到ur控制器中並調用它,然后如您所說,您便可以將其分配給$ scope,您可以按照以下步驟進行操作。

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

希望您能理解,如果有任何拼寫錯誤,對此我深感抱歉,我正在嘗試通過移動Fone進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM