угловой с requirejs - контроллер аргумента не является функцией, получил неопределенный

0

Я пытаюсь использовать угловые с requirejs. Вот мой файл index.html

<!DOCTYPE html>
<html>
    <head>
        <script data-main="/js/app.js" src="/bower_components/requirejs/require.js"></script>
    </head>
    <body >
    <div ng-view ng-controller="accountController"></div>
    </body>
</html>

Файл app.js

require.config (
            {
            appDir  : '',
            baseUrl : '/js/',
            paths   :
            {
                // Configure alias to full paths
                'angular': '/bower_components/angular/angular.min',
                'ngRoute': '/bower_components/angular-route/angular-route.min',
                'main': 'main'

            },
            shim    :
            {
                'main':{
                    deps: ["angular", 'ngRoute']
                },
                'ngRoute':{
                    deps: ["angular"]
                }
            }
        });

 require( [ "main" ], function( app )
        {
            // Application has bootstrapped and started...
        });

Файл main.js

define([
    'common/RouteManager'
    ], function(RouteManager){
    var appName = 'elara',
        depends = ['ngRoute'],
        app = angular.module(appName, depends).config(RouteManager)

        angular.bootstrap(document.getElementsByTagName('body')[0], [ ]);

        return app;
});

RouterManager.js

(function ( define ) {
    define([
        'controllers/account'
        ], function(){
        var RouteManager = $routeProvider.when("/", angularAMD.route({
            templateUrl: '/html/tmpl/test.html', controller: 'registerController',
            controllerUrl: 'controllers/account.js'
        })).otherwise({redirectTo: "/"});

        return ["$routeProvider", RouteManager ];
    })
});

И, наконец, мой контроллер:

define(['common/settings'], function(settings){
    var accountController = function($scope, $http){
        $scope.username = "";
        $scope.password = "";

        $scope.register = function(){
            $http.post(config.apiAddress + "account/login/", {username: $scope.username, password: $scope.password}).then(
                function(data){
                    console.log(data);
                }, function(response){
                    console.log(response);
                })
        }
    };

    return accountController;
});

Я получаю

Аргумент 'accountController' не является функцией, получил неопределенный

исключение. Когда я проверяю вкладку сети, мой файл account.js не загружается. Так угловатые ничего не знают о accountController

  • 0
    Не быть тем парнем ... но зачем использовать requireJS с Angular? Для 99% всех приложений Angular, которые требуют, ничего бы не делалось, кроме как добавляло сложность. Экономия, которую вы получаете от ленивой загрузки файлов, ничто по сравнению с затраченным временем (и вы можете даже потерять производительность из-за задержки). Если вы не работаете над действительно огромной кодовой базой, а скачивание ленивым является обязательным.
Теги:
requirejs

1 ответ

0

Кронштейны

Вы возвращаете функцию в своем контроллере, чтобы она была

return accountController();

Не

return accountController;
  • 0
    Добавлены скобки, но без разницы. Спасибо, в любом случае :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню