我有一个简单的例子function checkIfValueIsGreaterThan0
如果我有ng-click
功能,我可以这样使用它:
<div ng-click="checkIfValueIsGreaterThan0()"></div>
但是我需要在我的$ scope中声明这个函数。有没有办法将它添加到可以在我的应用程序中使用的全局库,并能够注入该库并使其在我的视图中工作,而不必在我的控制器中明确声明它?
$scope.checkIfValueIsGreaterThan0 = myLibrary.checkIfValueIsGreaterThan0
答案 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();
}]);
我希望你能得到这个想法,如果有任何拼写错误,我很抱歉,因为我试图从移动设备上试一试。