我有一个声明如下的全局函数(只有必要的位):
initiateCheckList = {};
$(function() {
initiateCheckList = function() {
...
}
然后我在Angular控制器中有一个函数试图调用该函数,但是当调用以下函数时我得到错误initiateCheckList is not defined
:
$scope.updateSuburbs = function () {
$scope.suburbs.getModel($scope.areas.areaId);
initiateCheckList();
};
此函数嵌套在控制器中,并绑定到下拉列表change
,如下所示:
<select class="form-control" ng-model="areas.areaId" ng-change="updateSuburbs()">
什么是Angular,所以我无法调用全局函数,如何解决问题以便我可以调用它?
答案 0 :(得分:-1)
以下是以角度定义全局属性/函数的理想方法:
“全局”变量基本上有2个选项:
use a $rootScope [http://docs.angularjs.org/api/ng.$rootScope][1]
use a service [http://docs.angularjs.org/guide/services][1]
$ rootScope是所有范围的父级,因此在那里公开的值将在所有模板和控制器中可见。使用$ rootScope非常简单,因为您只需将其注入任何控制器并更改此范围内的值即可。它可能很方便,但却存在全局变量的所有问题。
服务是可以注入任何控制器并在控制器范围内公开其值的单例。作为单身人士的服务仍然是“全球性的”,但你可以更好地控制那些被使用和暴露的地方。
使用服务有点复杂,但不是那么多,这是一个例子:
var myApp = angular.module('myApp',[]);
myApp.factory('UserService', function() {
return {
name : 'anonymous',
printData: function() {console.log('Print Data');}
};
});
然后在控制器中:
function MyCtrl($scope, UserService) {
$scope.name = UserService.name;
UserService.printData();
}
我希望它能帮助您理解在角度中添加全局属性/函数。