我在模板中有这个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
给出的值的字符串数据。
答案 0 :(得分:1)
如果有其他人遇到同样的问题。错误是我使用相同的$stateParams
定义了我的value
。我认为value
是获取数据的一种方式,但它只是一个名称。我将一个value
更改为movie_info
并将其替换为模板,现在它正在运行。