2016-09-15 7 views
1

В моем проекте я использую UI-маршрутизатор. Пожалуйста, проверьте мой код, приведенный ниже, чтобы исправить это

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> 

Выше мои коды. когда я пытаюсь получить доступ к значению id с помощью $ stateParams, он отображается как неопределенный. Используя это, я пытаюсь вызвать другую функцию, передав параметр $ stateParams.id в качестве параметра, но он не работает. Пожалуйста, помогите

+0

ли вы добавить маршрутизатор UI ?? – SuperComupter

+0

Да, он работает нормально. onclick я могу перейти в это состояние, но не могу получить это значение id ... – Kishan

+0

Каков результат '$ stateParams'? Я бы предположил, что вы ничего не установили на 'id', можете ли вы проверить URL-адрес также – taguenizy

ответ

2

Предполагая, что вы передаете идентификатор, как следующее: -

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

Вы можете получить тот же идентификатор, используя

$state.params.id 

Скажите, пожалуйста, если у вас есть что-нибудь другое, чем это?

EDIT Предпочитают проходя этот путь

<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

Спасибо, что получил идентификатор param. – Kishan

+0

В моем предыдущем коде я вызываю getProjSurveys() при щелчке проектов, которые я получаю от ng-repeat. Я столкнулся с проблемой, например, при обновлении страницы она загружает страницу по умолчанию с идентификатором, вместо этого я хочу загрузить ту же страницу, которую пользователь щелкнул в списке проектов. Как это сделать, используя эти параметры? – Kishan

+0

yes that; s right он загрузит новую страницу с идентификатором, потому что теперь вы находитесь в новом состоянии. Если вы хотите сделать это на одной странице, тогда не используйте новое состояние, а используйте этот файл id во всплывающем модуле. – Rakeschand

Смежные вопросы