在我的应用程序中,我有一个ui-router状态home.container-big
,并且该状态具有嵌套状态home.container-big.container-big-trailer
。
在home.container-big
状态下,我以字符串的形式返回一个值。对于我的movie-info.html
模板,我需要将字符串值更改为对象。所以我使用JSON.parse
。
.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);
$scope.movie = $stateParams.value;
}
}
}
})
在home.container-big.container-big-trailer
状态下,我返回一个字符串值并将数据放在$scope.trailer_link
中,以便我可以使用_container-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.trailer_link = $stateParams.value);
console.log ($scope.trailer_link)
}
}
}
})
我的问题是,$stateParams.value
内的home.container-big.container-big-trailer
也会从父状态JSON.parse
通过home.container-big
。这导致错误,
SyntaxError: Unexpected token R
at Object.parse (native)
因为如果从路由器控制器中删除JSON.parse
,所有代码都能正常工作,但模板内部的数据存在一些问题。
答案 0 :(得分:0)
为了完成,这里的问题是两个州中$stateParams.value
的双重定义。我在父状态下将value
更改为movie-info
,然后更改模板中的参数以使其对应。