【问题标题】:SyntaxError: Unexpected token at Object.parse (native)SyntaxError:Object.parse 中的意外标记(本机)
【发布时间】:2015-12-09 00:37:59
【问题描述】:

我在模板中有这个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 开头的预告片(可能还有几个更多)。

* 编辑 *

如果我从ui-sref 链接中删除{value: '{{ trailer.link }}' },然后像这样点击,

  %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的值的字符串数据。

【问题讨论】:

  • 你能把你的haml代码转换成普通的HTML吗?

标签: angularjs json


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    相关资源
    最近更新 更多