我尝试使用ui-router实现SPA。
我实现了ng-click处理函数,该函数调用$state.transitionTo
中的ExpertController
函数。
我希望网址为/expert/{expertId}/profile
的模板显示在名为ui-view
的{{1}}中。
过渡很顺利。我可以看到网址发生了变化。 (/#/ expert to /#experts / {expertId})
但模板从未出现在expertProfile
中。问题是什么 ?
ui-view

/* app.route.js */
.state('experts', {
url : '/experts',
templateUrl : "expert/view",
controller : "ExpertController"
}).state('experts.profile', {
url : '/{expertId}'
, views : {
'expertProfile' : function($stateParams){
return "expert/" + $stateParam.expertId + "/profile";
}
}
})
/* app.js */
app.controller('ExpertController', function($scope, $http, $sce, $state) {
$scope.$ctrl = this;
$scope.tab = 'total';
$scope.setTab = function (tabid){
$scope.tab = tabid;
}
$scope.isSelected = function (tabid) {
return $scope.tab === tabid;
}
$scope.expertTalkList = "";
this.viewExpertProfile = function (expert){
$state.transitionTo('experts.profile', {expertId : expert});
}
});

答案 0 :(得分:0)
我发现了问题。
.state('experts.profile', {
url : '/{expertId}'
, views : {
'expertProfile' : function($stateParams){
return "expert/" + $stateParam.expertId + "/profile";
}
}
这段代码错了。
views.expertProfile
shuld是一个JSON对象,$stateParams
中缺少s。
我将此代码更改为
'expertProfile' : {
templateUrl : function($stateParams){
return "expert/" + $stateParams.expertId + "/profile";
}
}