Angular JS模块的JS错误

时间:2014-09-11 05:09:09

标签: javascript angularjs

我写了一个模块来跟踪我所有的帮助函数(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) 

任何想法?

2 个答案:

答案 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){}然后你在另一个控制器中调用相同的函数然后它应该工作。

或者替代解决方案是,如果它正在执行某些业务逻辑,或者如果您的要求是在其他地方使用,或者您的系统将来会像这样发展,那么您可以在角度服务中实现它。