如何实现一个全局函数,它可以在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.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();
}]);
我希望你会得到的想法,如果有任何打字错误,我很抱歉,因为我从手机下载这个
相关文章:
- Angular,函数在(模型)工厂中返回值
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- angular.js:13424错误:[ng:areq]参数'fn'不是函数,getObject
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- AngularJS,angular.element($0).scope()揭示了每个控制器的函数
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- 在Angular中呈现DOM对象时,如何调用控制器中指定的函数
- 表单中的数据不会传递给提交函数-使用Angular
- 将typescript函数访问到angular中
- 无法访问Angular Directive模板函数中的属性实际值
- Angular,从指令控制器中的控制器触发函数
- 如何在angular中使构造函数之外的服务可用
- 访问谷歌登录函数 Angular 2 中的构造函数参数
- element.sortable 不是一个函数 Angular
- TypeError:$locationProvider.when不是函数-angular
- 类构造函数angular 2的默认数组值
- 使用函数 - Angular JS更新数组中的值
- 加载元素后执行函数——angular
- 错误:不是函数- Angular Service
- 在构造函数angular 2中声明属性