SyntaxError:Object.parse(native)上的意外标记

时间:2015-12-08 14:03:00

标签: angularjs json

我在模板中有这个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状态,以便我可以使用其中的数据。

.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"}

在这个模板中,我列出了我的数据库中的所有预告片并通过movie_id过滤它们。当用户点击a ui-sref=".container-big-trailer时,我输入一个名为.container-big-trailer的新状态,并将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 个答案:

答案 0 :(得分:1)

如果有其他人遇到同样的问题。错误是我使用相同的$stateParams定义了我的value。我认为value是获取数据的一种方式,但它只是一个名称。我将一个value更改为movie_info并将其替换为模板,现在它正在运行。