TypeError:$translate.use不是函数



所以我首先添加了en、fr&nl到我的app.js文件。这是非常糟糕的做法,所以我现在从app.js文件中得到了翻译,并将它们粘贴到JSON格式的文件中。

然而,当我现在加载网站时,在我的控制器中,changeLanguage方法导致TypeError:$translate.use不是函数。有人看到我的错误了吗?

(首先是代码)

app.js:

    var app = angular.module('eva', ['ui.router', 'ngMaterial', 'ngMessages',
      'controllers', 'factories', 'ngAnimate', '720kb.socialshare',
      'angular-loading-bar', 'angular-svg-round-progress', 'pascalprecht.translate', 'ngSanitize',
      'facebook']);
app.config(function ($translateProvider) {
    $translateProvider.useSanitizeValueStrategy('sanitize');
    $translateProvider.useStaticFilesLoader({
        prefix: '../languages/',
        suffix: '.json'
    });
    $translateProvider.registerAvailableLanguageKeys(['en', 'nl', 'fr'], {
        'en': 'en',
        'nl': 'nl',
        'fr': 'fr'
    });
    $translateProvider.preferredLanguage('nl');
});

index.html:

<body layout="column" ng-controller="AppCtrl" layout-fill>
        <div id="fb-root"></div>
        <!--<vid-bg resources="resources" class="video" poster="poster" full-screen="fullScreen" muted="muted" z-index="zIndex" play-info="playInfo" pause-play="pausePlay"></vid-bg>-->
        <!-- ANGULAR MATERIAL LOADING -->
        <md-toolbar layout="row" md-scroll-shrink ng-if="true">
            <div class="md-toolbar-tools ng-scope" ng-controller="NavCtrl as demo">
                <md-button ng-click="toggleSidenav('left')"  class="md-icon-button" ng-show="isLoggedIn()" aria-haspopup="true" aria-expanded="true"
                        aria-label="sidebar menu">
                    <md-icon aria-label="Menu" md-svg-icon="./js/lib/material-design-icons/navigation/svg/design/ic_menu_24px.svg"></md-icon>
                    <md-tooltip md-direction="bottom">{{ 'MENU' | translate }}</md-tooltip>
                </md-button>
                <span>
                    <md-button md-no-ink href="#/index" aria-label="logo">
                        <img src="js/lib/images/logo/48x48.png" alt="logo" >
                    </md-button>
                </span>
                <!-- fill up the space between left and right area -->
                <span flex></span>
                <md-fab-speed-dial md-direction="left" ng-class="demo.selectedMode">
                    <md-fab-trigger>
                        <md-button aria-label="menu" class="md-fab md-warn">
                            <md-tooltip md-direction="bottom">Menu</md-tooltip>
                            <md-icon aria-label="Menu" md-svg-icon="./js/lib/material-design-icons/action/svg/design/ic_language_24px.svg"></md-icon>
                        </md-button>
                    </md-fab-trigger>
                    <md-fab-actions>
                        <md-button aria-label="dutch" class="md-fab md-raised md-mini" ng-click="changeLanguage('nl')">
                            <md-tooltip md-direction="bottom">Dutch</md-tooltip>
              <p>nl</p>
                        </md-button>
                        <md-button aria-label="english" class="md-fab md-raised md-mini" ng-click="changeLanguage('en')">
                            <md-tooltip md-direction="bottom">English</md-tooltip>
              <p>en</p>
                        </md-button>
                        <md-button aria-label="french" class="md-fab md-raised md-mini" ng-click="changeLanguage('fr')">
                            <md-tooltip md-direction="bottom">French</md-tooltip>
              <p>fr</p>
                    </md-button>
                </md-fab-actions>
            </md-fab-speed-dial>
        </div>
    </md-toolbar>

appController:

angular.module('controllers')
.controller('AppCtrl', ['$scope', '$mdSidenav',
 '$mdToast','$translate', 'auth', 'Facebook','$state', function($scope, $mdSidenav, $translate, auth, Facebook,$state){
    /* sidenav togglen */  
        $scope.toggleSidenav = function(menuId) {
            $mdSidenav(menuId).toggle();
        };
      /* taal veranderen */
        $scope.changeLanguage = function(langKey){
            $translate.use(langKey);
            $state.reload();
        };

错误发生在$translate.use(langKey);上面代码段的行。

在这里你可以看到我的JSON文件结构:https://i.stack.imgur.com/OsIAn.jpg.

这是我的JSON语言文件的一个例子:https://i.stack.imgur.com/H2cio.jpg.

网站外观如下:https://i.stack.imgur.com/jmh6d.jpg.

如果有的话)或;或者代码"snippets"末尾缺少类似的内容,这是因为我只复制粘贴了页面的一部分,重要的部分都在那里,所以不用担心。

任何人都可以看到错误的原因是什么?

修复了,在我的模块中我忘记了$mdToast。。。它们都必须以相同的顺序加载AND。

相关内容

最新更新