我一直在关注AngularJS中的UI-router教程: UI-router。我已经研究了这些问题,但我无法找到我的问题的答案。这是我正在做的一件非常简单的事情,所以这里没有先进的技术。 :)
因此,用户应通过单击列表中的电影来获取电影详细信息状态。但每当我点击它时,控制台都说:
错误:无法从州'api'
解析'api.movieDetails'我该如何解决这个问题?
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('api', {
url: '/api',
controller: 'apiController',
templateUrl: '/movieSearch.html'
})
.state('details', {
url: "/movieDetails/:id",
templateUrl: "/movieDetails.html"
});
//Catch all
$urlRouterProvider.otherwise("/movie");
});
我的html代码段:
<div>
<img src="{{movie.posters.thumbnail}}" />
<a ui-sref="api.details({id: movie.id})"><h2>{{movie.title}}</h2></a>
</div>
apiController.js
module.exports = function apiController($scope, apiFactory, $stateParams) {
$scope.data = {}
$scope.$watchGroup(['data.q', 'data.page_limit', 'data.page'], function() {
//Use movie loader
apiFactory.getMovies($scope.data.q, $scope.data.page_limit, $scope.data.page)
.then(function(response) {
$scope.movies = response.data.movies
});
})
}
答案 0 :(得分:2)
首先,状态<a ui-sref="api.details({id: movie.id})"><h2>{{movie.title}}</h2></a>
缺少“id”参数,因此您需要将其添加到状态定义中:
$stateParams
然后你需要重定向到状态并传递电影的参数:
apiController
现在,将console.log($stateParams.id);
注入const index= [];
并查看使用undefined