ui-router:过渡模板从未显示过

时间:2016-09-08 11:13:21

标签: angularjs angular-ui-router

我尝试使用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});
		}
	
});




1 个答案:

答案 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";
            }
}