Я ввожу новый DOM с контроллером:
app.controller('cart', function ($scope, $http) {
$scope.content = {
label: "hello, world!",
};
});
var $html = '<div ng-controller="cart"></div>';
var $root = $('[ng-app]');
angular.element($root).injector().invoke(function ($compile) {
var $scope = angular.element($root).scope();
$root.append($compile($html)($scope));
// Finally, refresh the watch expressions in the new element
$scope.$apply();
});
В $root.append($compile($html)($scope));
возникает ошибка.Я даже вижу, что контроллер зарегистрирован на app
, когда я отлаживаю его в Chrome.
Что может пойти не так с кодом?
РЕДАКТИРОВАТЬ
Так что, если я положу так:
var app = angular.module('app', ['ngSanitize']);
app.controller('base', function ($scope, $http) {
....
});
app.controller('cart', function ($scope, $http) {
....
});
в том же файле, это работает.В моем случае у меня есть 2 отдельных файла js.Один файл содержит:
var app = angular.module('app', ['ngSanitize']);
app.controller('base', function ($scope, $http) {
....
});
Файл выше загружается первым.Тогда второй файл имеет:
app.controller('cart', function ($scope, $http) {
....
});
var $html = '<div ng-controller="cart"></div>';
var $root = $('[ng-app]');
angular.element($root).injector().invoke(function ($compile) {
var $scope = angular.element($root).scope();
$root.append($compile($html)($scope));
// Finally, refresh the watch expressions in the new element
$scope.$apply();
});
и загружается позже после завершения первого файла.Таким образом, вопрос должен быть изменен на:
Как ввести новый контроллер в модуль после инициализации модуля?