Я застрял в последней части этого проекта Codecademy AngularJs
Я использовал маршрутизацию и работу маршрутизации (она меняет представление при нажатии), но не показывает привязки данных. Я проверил index.html, поэтому я не думаю, что там ошибка. Не могли бы вы проверить его? Вот код:
app.js
var app = angular.module('CalendarApp', ['ngRoute'])
app.config(['$routeProvider', function($routeProvider) {
$routeProvider .when('/', {
controller: 'DayController',
templateUrl: 'views/day.html'
}).when('/:id',{
controller: 'EventController',
templateUrl: 'views/event.html'
}).otherwise({
redirectTo: '/'
});
}]);
events.js (Сервис)
app.factory('events', ['$http', function($http) {
return $http.get('https://s3.amazonaws.com/codecademy-content/courses/ltp4/events-api/events.json').success(function(data) {
return data;
}).error(function(err) {
return err;
});
}]);
EventController.js
app.controller('EventController', ['$scope', 'events', '$routeParams', function($scope, $routeParams, events) {
$scope.eventId = $routeParams.id;
events.success(function(data) {
$scope.event = data.events;
});
}]);
event.html (просмотреть)
<div class="event-detail">
<h2 class="event-name">{{event[eventId].name}}</h2>
</div>
И вот короткий формат events.json, данные которого я пытаюсь получить:
{
"date": 1421384400000,
"events": [
{
"name": "Casual Friday",
"from": 1421384400000,
"to": 1421470800000,
"where": ""
},
{
"name": "Taco Time",
"from": 1421431200000,
"to": 1421438400000,
"where": "Brooklyn Taco Co. 120 Essex Street New York, NY 10002"
}
]
}
events.js пытается вернуть обещание, но загружать его только один раз;
app.factory('events', ['$http', function($http) {
var promise = $http.get('https://s3.amazonaws.com/codecademy-content/courses/ltp4/events-api/events.json');
return {
getEvents : function(){ return promise; }
}
}]);
Теперь, если вы выполните console.log, вы должны получить объект Promise в своем контроллере.
EventController.js
app.controller('EventController', ['$scope', 'events','$routeParams', function($scope, events, $routeParams) {
// code in regards to itemId etc.
events.getEvents().then(function(d){
$scope.event = d.data.events;
});
}]);
(учитывая, что остальная часть функциональности работает, как вы упомянули) Сообщите мне, если она работает
id
, так что вы пытаетесь сопоставить его в URL?id
- это просто имя, которое я могу использовать для получения индекса? Я тогда использую индекс, чтобы получить информацию, которая мне нужна в EventController?