2016-06-27 62 views
0

我有一個簡單的例子function checkIfValueIsGreaterThan0如何實現可在多個NG-點擊功能角度

使用如果我有一個ng-click功能的全局函數,我可以這樣使用它:

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

但是我需要在$ scope中聲明這個函數。有沒有辦法把這個添加到一個全局庫中,這個庫可以在我的應用程序中使用,並且能夠注入這個庫並讓它在我的視圖中工作,而不必在我的控制器中明確地聲明它。

$scope.checkIfValueIsGreaterThan0 = myLibrary.checkIfValueIsGreaterThan0

+0

'myLibrary.checkIfValueIsGreaterThan0.bind(myLibrary)'如果你在裏面使用'this' –

回答

0

在你的應用程序的引導,在運行或配置塊,將其放置在$rootScope(其本身應注射):

$rootScope.checkIfValueIsGreaterThan0 = myLibrary.checkIfValueIsGreaterThan0; 

由於$rootScope是內的所有範圍的父母你的應用程序,你將能夠在任何模板中使用checkIfValueIsGreaterThan0()或在任何控制器中使用$scope.checkIfValueIsGreaterThan0() ..

0

是的,它是最肯定可能的,你可以用它來製造工廠服務nd在整個應用程序中使用它。你可能需要將$ scope或$ http服務傳遞給你的工廠,但這取決於你試圖完成什麼。萬一如果u做那麼在哪裏可以像我在下面

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

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

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

     return checkIfValueIsGreaterThan0; 
}); 

控制器做到了當u想要使用此工廠只需將其注入到烏爾控制器,並調用它,併爲u說ü瓦納分配給它到$範圍你可以做到這一點如下。

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

我希望日子會把你的想法,如果有任何錯字的錯誤我爲抱歉因爲我是tryping這個來自移動Fone公司。

+0

什麼是exteral庫? – Wcan