Angular.JS未知提供者

时间:2013-07-29 12:31:24

标签: angularjs

我的Angular.js网络应用程序包含服务UserModel和控制器 - Users

UserModel

/*
 * User model service
 */
angular.module('my_mode_ext').factory('UserModel', [function(){
    // user model
    var model = [];

    //
    // Return users model
    //
    model.get = function(){
        // some object
        model = {.........};
        // return model
        return model;
    }

    return model;
}]);

我尝试在控制器中使用它:

var UsersController = ['$scope', '$rootScope', '$http', '$route',
  function($scope, $rootScope, $http, $route, UserModel, ngTableParams){
    console.log('UserModel ' + UserModel);
.....
}];

但在undefined中获得UserModel并且错误:

Error: Unknown provider: UserModelProvider <- UserModel

如何解决?

UPD。我发现了问题。实际上这个服务和控制器在其他模块中而不是另一个应用程序,但我做不到:

angular.module(my_main_module, ['my_mode_ext'])

因为我在Web应用程序的工作时间加载此脚本。如何在角度应用程序中动态加载模块?

谢谢。

3 个答案:

答案 0 :(得分:1)

语法不正确请转到下面

var UsersController = ['$scope', '$rootScope', '$http', '$route','UserModel','ngTableParams'
  function($scope, $rootScope, $http, $route, UserModel, ngTableParams){
    console.log('UserModel ' + UserModel);
.....
}];

答案 1 :(得分:1)

在函数

之前添加字符串名称
var UsersController = ['$scope', '$rootScope', '$http', '$route', 'UserModel', 'ngTableParams'

function($scope, $rootScope, $http, $route, UserModel, ngTableParams){
    console.log('UserModel ' + UserModel);
.....
}];

答案 2 :(得分:1)

必须在定义UserModel服务的同一模块上定义控制器,或者控制器模块应依赖于my_mode_ext模块。

查看代码,控制器定义变为

angular.module('my_mode_ext').controller("UserController",['$scope', '$rootScope', '$http', '$route','UserModel','ngTableParams', function($scope, $rootScope, $http, $route, UserModel, ngTableParams){
    console.log('UserModel ' + UserModel);
}]);