2014-02-20 3 views
1

Я использую последнюю версию Require и Angular, но я столкнулся с необычной ошибкой. У меня есть контроллер для каждого вида, но, видимо, работает только для одного вида. Это мой пример код:Множество контроллеров RequireJS и AngularJS

Определить все контроллеры: Controllers.js

define([ 
    'modules/index/controller', 
    'modules/test/controller' 
], function(){}); 

Здесь работает только с одним контроллером, если я включать 2, как здесь я получаю Ошибки: нг: areq Bad аргумента

индекс: controller.js

define(['angular'], function(angular){ 

    'use strict'; 

    return angular.module('myApp.controllers', []) 

    .controller('indexCtrl', ['$scope' , function ($scope){ 
     alert("index ok"); 
    }]); 

}); 

Тест: controller.js

define(['angular'], function(angular){ 

    'use strict'; 

    return angular.module('myApp.controllers', []) 

    .controller('testCtrl', ['$scope' , function ($scope){ 
    alert("test ok"); 
    }]) 

}); 

Где я ошибаюсь?

ответ

3

Проблема заключается в том, что вы дважды создаете модуль myApp.controllers, а другой перезаписываете другой. Предполагая, что вы вручную развернув угловым после загрузки контроллера, что вы должны делать, чтобы создать модуль, а затем загрузить этот модуль для создания контроллера:

app.js

define(['angular'], function(){ 
    'use strict'; 
    return angular.module('myApp.controllers', []); 
}); 

индекса : controller.js

define(['app'], function(app){ 
    'use strict'; 
    return app.controller('indexCtrl', ['$scope' , function ($scope){ 
     alert("index ok"); 
    }]); 
}); 

тест: controller.js

define(['app'], function(app){ 
    'use strict'; 
    return app.controller('testCtrl', ['$scope' , function ($scope){ 
    alert("test ok"); 
    }]) 
}); 

Я создал angularAMD для облегчения использования RequreJS и AngularJS, которые могут представлять интерес для Вас:

http://marcoslin.github.io/angularAMD/

+0

Это решило мою проблему. Благодаря! –

+0

Это работает для меня! –

Смежные вопросы