我写了一个模块来跟踪我所有的帮助函数(scripts/apps.js)
:
angular.module('app', ['ngResource']).run(function($scope){
$scope.UTIL = {
setup_pod_variables: function (pods){...}
...
});
我正在尝试从另一个目录中定义的Controller中调用辅助函数:scripts / controller / Dashboard.js:
scope.UTIL.setup_pod_variables(pods)
;
我已经包含了另一个模块:
var pods = angular.module('app', []);
但似乎我仍然收到错误:
TypeError: Cannot read property 'setup_pod_variables' of undefined
at new <anonymous> (file:///Users/simon_zhu/Documents/nautilus/app/scripts/controllers/Dashboard.js:16:12)
at d (file:///Users/simon_zhu/Documents/nautilus/app/scripts/angular.min.js:30:346)
at Object.instantiate (file:///Users/simon_zhu/Documents/nautilus/app/scripts/angular.min.js:30:475)
at file:///Users/simon_zhu/Documents/nautilus/app/scripts/angular.min.js:61:228
at file:///Users/simon_zhu/Documents/nautilus/app/scripts/angular.min.js:48:320
at q (file:///Users/simon_zhu/Documents/nautilus/app/scripts/angular.min.js:7:380)
at W (file:///Users/simon_zhu/Documents/nautilus/app/scripts/angular.min.js:48:186)
at f (file:///Users/simon_zhu/Documents/nautilus/app/scripts/angular.min.js:42:268)
at f (file:///Users/simon_zhu/Documents/nautilus/app/scripts/angular.min.js:42:285)
at f (file:///Users/simon_zhu/Documents/nautilus/app/scripts/angular.min.js:42:285)
任何想法?
答案 0 :(得分:1)
实用程序功能和数据最好放在服务中,然后可以从任何地方访问它。
您的问题是模块中的$ scope与控制器中的$ scope不同。
服务解决方案看起来像这样(可能包含一些错误,因为它是从我的头部写的而未经过测试)
angular.module('app',[]).factory('utils', function(){
return { setup_pod_variables: function(pods){...}};
}
angular.module('app').controller('myController', ['utils', function(utils){
utils.setup_pod_variables(...);
}])
答案 1 :(得分:0)
嗨这个函数应该在$ rootScope而不是controller(DashBoard.js)本地$ scope中定义,那么只有你可以在其他控制器中使用它。
在DashBoard.js中创建$ rootScope.UTIL.setup_pod_variables(pods){}然后你在另一个控制器中调用相同的函数然后它应该工作。
或者替代解决方案是,如果它正在执行某些业务逻辑,或者如果您的要求是在其他地方使用,或者您的系统将来会像这样发展,那么您可以在角度服务中实现它。