SyntaxError: неожиданный токен в Object.parse (собственный)

0

У меня есть этот код haml в шаблоне,

.movie_container{"ng-repeat" => "movie in movieGroup | orderBy:'release_date'"}
  %a{:href => "#", "ui-sref" => ".container-big({value: '{{movie}}'})"} More info

Когда пользователь нажимает на a ui-sref я загружаю новое состояние с именем home.container-big. Я также home.container-big свои данные строки фильма в home.container-big state, чтобы я мог использовать данные там.

.state('home.container-big',{
  params: {
    value: null
  },
  url: '',
  views: {
    "container-big":{
      templateUrl: '../assets/angular-app/templates/_movie-info.html',
      controller: function($scope, $stateParams, $state) {
        $scope.movie = JSON.parse($stateParams.value);
        console.log ($scope.movie)
      }
    }
  }
})

В этом состоянии у меня есть контроллер. В контроллере у меня есть область, называемая фильмами. Строка данных из предыдущего состояния преобразуется в JSON и помещается в мои $scope.movies поэтому я могу использовать ее в _movie-info.html,

Все идет нормально.

.container-info{"ng-style" => "{'background-image':'url(https://image.tmdb.org/t/p/w1280{{movie.backdrop}})'}"}

  %ul.trailers
    %li{"ng-repeat" => "trailer in filteredTrailers = (trailers | filter: { movie_id: movie.movie_id})"}
      %a{"ui-sref" => ".container-big-trailer({value: '{{ trailer.link }}' })"} {{ trailer.link }}

  .container-trailers
    %div{"ui-view" => "youtube_trailer"}

В этом шаблоне я делаю список всех трейлеров в своем db и фильтрую их с помощью movie_id. Когда пользователь нажимает на a ui-sref=".container-big-trailer я ввожу новое состояние, называемое .container-big-trailer и trailer.link данные из trailer.link как значение для этого состояния.

И в этот клик я получаю ошибку

SyntaxError: Unexpected token y
  at Object.parse (native)

Похоже, что токен имеет какое-то отношение к значению trailer.link потому что токен является первым признаком значения trailer.link, за исключением трейлеров, начинающихся с буквы N или F (и, возможно, еще нескольких).

* РЕДАКТИРОВАТЬ *

Если я удалю {value: '{{ trailer.link }}' } из ссылки ui-sref а затем нажмите так,

  %ul.trailers
    %li{"ng-repeat" => "trailer in filteredTrailers = (trailers | filter: { movie_id: movie.movie_id})"}
      %a{"ui-sref" => ".container-big-trailer()"} {{ trailer.link }}

И затем console.log, каково значение моего состояния .container-big-trailer,

.state('home.container-big.container-big-trailer',{
  params: {
    value: null
  },
  url: '',
  views: {
    "youtube_trailer":{
      templateUrl: '../assets/angular-app/templates/_container-trailer.html',
      controller: function($scope, $stateParams, $state) {
        $scope.value = $stateParams.value;
        console.log ('big-trailer' + $scope.value)
      }
    }
  }
})

Он выводит строковые данные значения, заданного с состоянием home.container-big.

  • 1
    Можете ли вы преобразовать свой код haml в обычный HTML?
Теги:

1 ответ

1
Лучший ответ

Если кто-то другой сталкивается с той же проблемой. Ошибка заключалась в том, что я определил свои $stateParams с одинаковым value. Я думал, что value - это способ получить данные, но это просто имя. Я изменил одно value на movie_info и заменил его также в шаблоне, и теперь он работает.

Ещё вопросы

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