ajax — AngularJS Php файл с angular в нем не работает после $ http

У меня есть php-файл с кучей угловатых вещей, и он работает нормально, когда я включаю его напрямую, однако, как только я включаю этот php-файл через $ http, вот так:

$http.get('include/step'+step+'.php').
success(function(data, status, headers, config) {
$("#tab_"+step).html(data);
});

Он перестает работать, тогда я вижу, что такие вещи, как: {{category.title}} и т. Д., Отображаются как текст, а не как его значение.

Я начинаю с angular и пытаюсь просто заставить angular распознавать код, добавляемый через ответ ajax или просто ответ $ http.

Я тоже пытался делать

но я получил этот angular.bootstrap (data);

Error: [ng:areq] Argument 'eventCatCtrl' is not a function, got undefined

eventCatCtrl был первым из моих контроллеров в этом файле, который был сгенерирован через $ http.

Я также сделал это angular.bootstrap (data, [‘eventApp’]); eventApp — это название моего основного модуля.
Просто для информации, все эти http-вещи выполняются внутри div, и я определил мой модуль для тела, если это имеет значение.

По запросу больше кода:

Функция вызывается из этого:

<div class="form-group progress-tracker__buttons" ng-controller="StepChange">
<input type="button" class="btn btn-primary btn-save" value="Save">
<input type="button" class="btn btn-default btn-next disabled" value="Next" ng-click="changeStep($event)">
<div class="last-saved">Last saved: Not saved yet</div>
</div>

Вот мой модуль, контроллер и функция:

var eventApp = angular.module('eventApp', []);

eventApp.controller('StepChange', function($scope, $http){
$scope.changeStep = function($event){
$http.get('include/step2.php').
success(function(data, status, headers, config) {
$("#tab_2").html(data);
});
};
});

В моем файле step2.php у меня есть эта часть:

<div class="panel-group form-group sortable" id="catAccordion" ng-controller="eventCatCtrl">
<div ng-repeat="category in categories.list">
<p>{{category.title}}</p>
</div>
</div>

У меня есть фабрика как таковая:

eventApp.factory('EventCategories', function () {
var EventCategories = {};
EventCategories.list = [
{
name: "Robert Downey Jr.",
character: "Tony Stark / Iron Man"},
{
name: "Chris Evans",
character: "Steve Rogers / Captain America"}
];
return EventCategories;
});

И у меня есть такой контроллер для этой фабрики:

eventApp.controller("eventCatCtrl", function($scope, EventCategories){
$scope.categories = EventCategories;
});

0

Решение

Вы не можете инициализировать контроллер после того, как angular был загружен. Из-за этого вы получаете сообщение об ошибке

Error: [ng:areq] Argument 'eventCatCtrl' is not a function, got undefined

Также, $http.get следует использовать для сохранения / извлечения данных. Для включения других макетов и пользовательских интерфейсов вы должны использовать шаблоны и директивы. Вы сможете управлять отображением встроенного HTML-содержимого с помощью переменных в $scope,

Ленивая загрузка в Angular

http://ify.io/lazy-loading-in-angularjs/

Кроме того, вам нужно будет предоставить сервис регистрации контроллера, например:

eventApp.config(['$controllerProvider', function($controllerProvider) {

eventApp.controllerProvider = $controllerProvider;
}]);

И, где вы регистрируете контроллер, используйте следующее:

eventApp.controllerProvider("eventCatCtrl", function($scope, EventCategories){
$scope.categories = EventCategories;
});
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector