如何在angularJS中使用myprovider

时间:2015-03-19 03:52:44

标签: angularjs

我只是像这样引用translateProvider:

    var myAppModule = angular.module('myapp', ['ngRoute', 'ngMaterial', 'ngResource', 'pascalprecht.translate']);

启动js,我想在我的commonService.js中使用它, 像这样:

myAppModule.factory('commonService', ['$resource', '$translate', function ($resource, $translate) {
        var auth = $resource('http://localhost:8012/user/auth.aspx', {}, {});
        return {
            init: function () {
                var language = $resource("/Resources/Chinese.json");
                language.get(function (data) {
                    console.data(data);
                });
                $translate.translations('en', {
                    HEADLINE: 'Hello there, This is my awesome app!',
                    INTRO_TEXT: 'And it has i18n support!'
                })
             .translations('de', {
                 HEADLINE: 'Hey, das ist meine großartige App!',
                 INTRO_TEXT: 'Und sie untersützt mehrere Sprachen!'
             });
                $translate.preferredLanguage('de');
            },
            submit: function (user) {
                user.uk = "ad82544450d6fd3296878cbcd7a95d6b";
                return auth.get(user);
            }
        }
    }]);

但它警告我: TypeError:undefined不是函数     在Object.init(commonService.js:14)     at new(loginController.js:8)     at Object.invoke(angular.js:4182)     at $ get.extend.instance(angular.js:8441)     在angular.js:7693     在forEach(angular.js:331)     at nodeLinkFn(angular.js:7692)     在compositeLinkFn(angular.js:7075)     at publicLinkFn(angular.js:6954)     在angular.js:1451 angular.js:9814获取http://localhost:41251/Resources/Chinese.json 404(未找到)

1 个答案:

答案 0 :(得分:1)

顺便说一下你得到的错误,简单地说是Chinese.json的路径 是错误的,尝试在不同的选项卡中打开它,它会给你相同的404.所以提供正确的路径到json文件。 我没有使用过角度翻译,但从那里看来,你似乎是以错误的方式使用它。 基本上,提供程序仅在配置阶段可用,而不是在此之后。 来自AngularJs网站

  

在应用程序引导期间,在Angular关闭之前创建所有   服务,它配置和实例化所有提供者。我们称之为   应用程序生命周期的配置阶段。在这   阶段,服务无法访问,因为它们尚未创建   爱好。

     

配置阶段结束后,与提供商的互动就是   不允许,并开始创建服务的过程。我们称之为   应用程序生命周期的一部分运行阶段。

您需要在配置阶段设置首选语言和翻译, 您可以使用$ translate服务切换应用程序中的语言 使用方法。以下代码来自http://angular-translate.github.io/链接 他们也在这里给出了逐步文档http://angular-translate.github.io/docs/#/guide/07_multi-language 对于异步加载,可以在http://angular-translate.github.io/docs/#/guide/12_asynchronous-loading

找到示例

var myAppModule = angular.module('myapp', ['ngRoute', 'ngMaterial',     'ngResource', 'pascalprecht.translate']);

myAppModule.config(function ($translateProvider) {
  $translateProvider.translations('en', {
    HEADLINE: 'Hello there, This is my awesome app!',
    INTRO_TEXT: 'And it has i18n support!'
  });
  $translateProvider.translations('de', {
     HEADLINE: 'Hey, das ist meine großartige App!',
     INTRO_TEXT: 'Und sie untersützt mehrere Sprachen!'
  });
  $translateProvider.preferredLanguage('en');
});

myAppModule.controller('Ctrl', function ($scope, $translate) {
  //key is 'en','de' i.e. the language you
  //you want to use
  $scope.changeLanguage = function (key) {
    $translate.use(key);
  };
});