0

我正在尝试创建一个工厂并在每个控制器中交叉使用它,但显然我做错了什么......

应用程序:

var app = angular.module('sam', ['ngRoute', 'ngGrid', 'ui.bootstrap']);

工厂

app.factory("User",function(){
        return {};
    });

路线

// configure our routes
app.config(function($routeProvider) {
        $routeProvider

            // route for the main page which will direct to the buildings page
            .when('/', {
                templateUrl : 'web/pages/buildings.html',
                controller  : 'mainController',
                controllerAs : 'buildings'
            })

    }); 

控制器

app.controller('mainController', ['$filter', '$http','$log', function($filter, $http, $log, User){
        $log.log('hello!!!!!', User);
}]);

这打印:hello!!!!! undefined

4

3 回答 3

2

您的控制器中缺少“用户”。

app.controller('mainController', ['$filter', '$http','$log', **'User',** function($filter, $http, $log, User){
        $log.log('hello!!!!!', User);
}]);
于 2014-07-14T15:40:40.690 回答
1

您忘记将User其作为注入数组的一部分包含在内

controller('mainController', ['$filter', '$http','$log', function($filter, $http, $log, User){

应该:

controller('mainController', ['$filter', '$http','$log','User', function($filter, $http, $log, User){
于 2014-07-14T15:40:58.007 回答
0
app.factory("User",function(){
    return {
           show:function(){
                alert('Factory called')
           }
};
});




app.controller('mainController', ['$filter', '$http','$log','User', function($filter, $http, $log, User){

  //that is the way you can call your factory
  // you can call this factory function in any controller by injecting it.

      User.show(); //will popup alert window.

}]);

于 2014-07-14T15:58:47.067 回答