Данные не привязаны в маршруте?

0

Я застрял в последней части этого проекта 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"
    }
  ]
}
  • 1
    В данных нет id , так что вы пытаетесь сопоставить его в URL?
  • 0
    @charlietfl Я думаю, что id - это просто имя, которое я могу использовать для получения индекса? Я тогда использую индекс, чтобы получить информацию, которая мне нужна в EventController?
Показать ещё 7 комментариев
Теги:
angular-routing

1 ответ

0

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; 
    });

}]);

(учитывая, что остальная часть функциональности работает, как вы упомянули) Сообщите мне, если она работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню