angularjs translate不能与angular ui路由器一起使用?

时间:2013-10-22 08:02:45

标签: angularjs

我是Angularjs的新手

我想使用angular-translate

这是网站

http://pascalprecht.github.io/angular-translate/

我引用它的文档,我收到了错误

Uncaught TypeError: Cannot call method 'useStaticFilesLoader' of undefined from remoteApp 

这是我的代码

app.js

angular.module('remoteApp', ['ui.bootstrap', 'ui.router', 'ngResource', 'truncate',    
  'pascalprecht.translate'])
  .config(['$translateProvider', function ($routeProvider, $stateProvider, $urlRouterProvider,      
    $translateProvider) {

$translateProvider.useStaticFilesLoader({
  prefix: 'languange/locale-',
  suffix: '.json'
});

$translateProvider.preferredLanguage('en');
$translateProvider.useLocalStorage();


$stateProvider
.state('index', {
    url: "",
    views: {
        "viewA": {
            templateUrl: "views/main.html",
            controller: 'MainCtrl'
        },
        "viewB": {
            templateUrl: "views/appList.html",
            controller: 'MainCtrl'
        },
        "viewC": {
            templateUrl: "views/appTree.html",
            controller: 'ApptreeCtrl'
        }
    },

})

.state('applicatoion', {
    url: "/applicatoion",
    views: {
        "viewA": {
            templateUrl: "views/main.html",
            controller: 'MainCtrl'
        },
        "viewB": {
            templateUrl: "views/appList.html",
            controller: 'MainCtrl'
        },
        "viewC": {
            templateUrl: "views/appTree.html",
            controller: 'ApptreeCtrl'
        }
    }
})}]);

我不知道,

请帮助

1 个答案:

答案 0 :(得分:2)

现在你正在调用.config

config(['$translateProvider', function ($routeProvider, $stateProvider, $urlRouterProvider,      
    $translateProvider) {
    // ...
}]);

.config有其参数(依赖关系)由AngularJS注入,有两种方法可以调用config;

1 - 传递一个函数,AngularJS将读取参数名称并找到匹配的依赖项。 2 - 传入一个数组,其中最后一项是函数,其他项是依赖项的名称,如果使用它,AngularJS将不会读取函数的参数名。这存在的原因是你可以缩小你的代码;因为缩小会更改参数名称,AngularJS会使用这些名称来查找依赖项。

你现在拥有的是你只指定一个依赖项'$translateProvider',这意味着传递给函数的第一个参数是translateProvider,而其他参数最终都是未定义的,因为你没有要求更多的依赖。

你可以做的是让AngularJS像这样读取你的依赖名称

config(function ($routeProvider, $stateProvider, $urlRouterProvider, $translateProvider) {
    // ...
});

或者你可以指定所有的依赖项,像这样匹配函数参数列表,允许你(只有你一贯地这样做)在不破坏代码的情况下缩小你的代码。

config(['$routeProvider', '$stateProvider', '$urlRouterProvider', '$translateProvider',
    function ($routeProvider, $stateProvider, $urlRouterProvider, $translateProvider) {
        // ...
}]);