2016-09-15 46 views
1

在我的项目中使用的是UI-router。请检查我下面的代码来修复它

index.js

.state('survey.surveyList', { 
     url: '/:id', 
     templateUrl: 'survey/surveyList.html', 
     controller: 'surveyController' 
    }); 

surveyController.js

angular.module("adminsuite").controller("surveyController",['getAllSurveyService','$http','AuthenticationService', '$scope','$rootScope', '$state', '$stateParams', function(getAllSurveyService,$http, AuthenticationService,$scope,$rootScope,$state,$stateParams){ 
     $scope.getProjSurveys = function(projId){ 
     var i; 
     for(i in $scope.allProjects){ 
     if(projId == $scope.allProjects[i].ProjectID){ 
      $scope.allSurveys = $scope.allProjects[i].Surveys; 
     } 
     } 
     angular.element(document.querySelectorAll(".surveymodule")).removeClass('toggled'); 
     console.log($state.params.id); 
    }; 
}]); 

的index.html

<li ng-repeat="obj in allProjects track by $id(obj)"> 
       <a ui-sref="survey.surveyList({id: obj.ProjectID})" ng-click="getProjSurveys(obj.ProjectID)" data-id="{{obj.ProjectID}}">{{obj.ProjectName}}<span class="projectsetting"><img src="./images/settings.png"/></span></a> 
      </li> 

以上是我的代码。当我尝试使用$ stateParams访问id值时,它显示为未定义。使用此我想通过传递$ stateParams.id作为参数调用另一个函数,但它不工作。请帮助

+0

你添加UI路由器? – SuperComupter

+0

是的,它工作正常。 onclick我可以去这个状态,但无法取得这个ID值... – Kishan

+0

'$ stateParams'的输出是什么?我会假设你没有在'id'上设置任何东西,你是否也可以检查URL也 – taguenizy

回答

2

假设你传递ID喜欢以下内容: -

$state.go('survey.surveyList', {id : id}); 

你可以使用

$state.params.id 

请告诉我,你是否有什么比这不同相同的ID?

编辑 不想通过这种方式

<li ng-repeat="obj in allProjects track by $id(obj)"> 
    <a ng-click="getProjSurveys(obj.ProjectID)" data-id="{{obj.ProjectID}}">{{obj.ProjectName}}<span class="projectsetting"><img src="./images/settings.png"/></span></a> 
</li> 

function getProjSurveys(ProjectID){ 
    $state.go('survey.surveyList', {id : ProjectID}); 
} 
+0

谢谢我得到了参数ID。 – Kishan

+0

在我上面的代码中,我打电话给getProjSurveys()点击从ng-repeat获得的项目。我面临的问题就像刷新页面,它正在加载带有ID的默认页面,而是我想加载用户从项目列表中单击的同一页面。如何使用这个参数来做到这一点? – Kishan

+0

是的;它的权利,它会加载新的页面与身份证,因为你现在处于一个新的状态。如果你想在同一页面上做,那么不要使用新的状态,而是在弹出窗口模式下做这个ID的东西.. – Rakeschand