我有一个名为home.test
的州。在这种状态下,我将模板_movie-info.html
注入视图。
.state('home.test',{
params: {
value: null
},
url: '',
views: {
"test":{
templateUrl: '../assets/angular-app/templates/_movie-info.html',
controller: function($scope, $stateParams, $state) {
$scope.movie = $stateParams.value
console.log ($scope.movie)
}
}
}
})
我在视图控制器中创建了一个名为$scope.movie
的范围,并插入了从ui-sref
操作传递的值。当我进入控制台日志显示的home.test
状态时,
{"id":7,"title":"Batman v Superman: Dawn of Justice","release_date":"2016-03-24","image":"/eJrlh2g9UGAd7R6mQAOQIIs329H.jpg","user_id":null,"created_at":"2015-12-07T15:17:47.287Z","updated_at":"2015-12-07T15:17:47.287Z","movie_id":"209112","imdb_rating":"N/A","backdrop":"/4YxoxVGu93ta0H4u0B98niGIUAu.jpg"}
但是当我尝试使用这些数据时,它并没有起作用。这是因为我拿走了对象的value
并将其插入$scope.movie
?
movie title: {{ movie.title }}
因为如果我为我的范围创建一个模型,那么
$scope.movie = {title: 'something cool'}
和它一样显示的控制台日志,
Object {title: "something cool"}
{{ movie.title }}
有效。
*编辑*
我怀疑问题是$stateParams
如何返回数据。如果我使用$stateParams.value
,则返回一个字符串。如果我只使用$scope.movie = $stateParams
它会返回一个对象,但它看起来很奇怪,
Object{
value: "{"id":7,"title":"Batman v Superman: Dawn of Justic…A","backdrop":"/4YxoxVGu93ta0H4u0B98niGIUAu.jpg"}"
}
value: "{"id":7,"title":"Batman v Superman: Dawn of Justice","release_date":"2016-03-24","image":"/eJrlh2g9UGAd7R6mQAOQIIs329H.jpg","user_id":null,"created_at":"2015-12-07T15:17:47.287Z","updated_at":"2015-12-07T15:17:47.287Z","movie_id":"209112","imdb_rating":"N/A","backdrop":"/4YxoxVGu93ta0H4u0B98niGIUAu.jpg"}"
答案 0 :(得分:1)
正如您在编辑中已经注意到的那样 - 数据$stateParams.value
的类型为string
- 因此请将控制器中的代码更改为:
$scope.movie = JSON.parse($stateParams.value);
并验证控制台输出是否也显示“对象”