У меня есть index.html
основной файл и частичный view1.html
, и я использую ng-route
. Поэтому я хочу, чтобы контроллер view1.js
загружался только при доступе к view1.html
. Итак, я успешно загрузил файл, используя директиву resolve
. Поскольку javascript загружается в фоновом режиме, angular начинает анализировать view1.html
, и я получаю:
[ng:areq] Argument 'SimpleController2' is not a function, got undefined
Как мне сообщить angular, что был добавлен новый контроллер, и он должен анализировать view1.html
только после применения контроллера.
main.js
var demoApp = angular.module('demoApp', ['ngRoute']);
demoApp.config(function ($routeProvider) {
$routeProvider
.when('/view1', {
controller: 'SimpleController1',
templateUrl: 'View1.html',
resolve: {
lol : function get() {
console.log('file is being loaded');
var fileRef = document.createElement('script');
fileRef.setAttribute("type", "text/javascript");
fileRef.setAttribute("src", "view1.js");
document.getElementsByTagName("head")[0].appendChild(fileRef);
fileRef.onload = function () {
console.log('file loaded');
}
}
}
})
.when('/view2',
{
controller: 'SimpleController',
templateUrl: 'View2.html'
})
.otherwise({redirectTo: '/view1'});
});
console.log('config has been added');
controller.js
console.log("file parsed");
demoApp.filter('myFilter', function ($sce) {
return function (input, isRaw) {
input = input.replace(/a/g, 'b');
return $sce.trustAsHtml(input);
};
});
demoApp.controller("SimpleController1", function ($scope, simpleFactory) {
$scope.names = [
{name: 'Nick', city: 'London'},
{name: 'Sick', city: 'Tokio'},
{name: 'Brick', city: 'cellar'}
];
});
Я новичок в angular. Я пробовал это, это (как применять файлы) и this (отказался от применения $controllerProvider
) это (тоже не удалось) и это (не удалось заставить все это работать вместе) Я даже не уверен, что они описали мои потребности. Пожалуйста, дайте мне подсказку, какой пост я должен копнуть глубже.
$controllerProvider
? У меня есть 3 представления, и каждое из них имеет более 1000 строк кода, я не хочу загружать их в глобальном масштабе. Еще минус в том, что я не хочу, чтобы уmain.js
был смешанный код из представлений. Я хочу, чтобы это было ясно и читабельно. У меня плохо спроектированная архитектура? Должен ли я реализовывать контроллеры только вmain.js
и внедрять функции, которые они используют, в отдельные файлы? - person deathangel908   schedule 07.10.2015angular.module('demoApp')
(без второго аргумента). - person yvesmancera   schedule 07.10.2015