2016-09-15 83 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