2017-09-05 1 views
0
....   

.state('books', { 
      url: '/book/chapter/:chap', 
      templateUrl: "views/chapter.html", 
      params: { chap: .........} 
     }) 

안녕하세요! 특정 컨트롤러에 변수가 있는데 그 값을 라우팅을 위해 param에 전달하려고합니다. 결국 같은 변수를 사용하여 새로운 URL을 만들 수 있도록 변수의 값을 변경하고 싶습니다.컨트롤러에서 경로 매개 변수로 변수 전달하기

알아두면 좋겠지 만 ui-router를 사용하고 있습니다.

나는 다음과 같은 문제를 어떻게 해결할 수 있는지 궁금합니다. 기본적으로 책의 특정 장을 열고 싶습니다. 5 장을 보겠습니다. 그러면 페이지의 왼쪽에 링크를 표시하고 싶습니다. 각 나머지 장, 그 이유는 변수의 값을 변경하려면. ng-repeat를 사용하여 어떻게 해결할 수 있습니까? getArticle (아래 그림 참조)을 사용하여 챕터 번호를 얻은 다음 ng-repeat를 사용하여 나머지 챕터를 ng 반복 할 생각입니까? 아이디어?

angular 
    .module('BookLibrary') 
    .controller("ChapterController", ["$scope","stateParams", "ChapterControllerService", function($scope, $stateParams, ChapterControllerService){ 

     $scope.chapterList = ChapterControllerService.chapters; 
     $scope.getArticle = chapterList[0].chapter; 

    }]); 

chapterList은 다음과 같습니다

chapterList = [ 
     { 
      chapter: "1", 
      content: "Chapter 1 goes here" 
     }, 
     { 
      chapter: "2", 
      content: "Chapter 2 goes here" 
     }, 
     { 
      chapter: "3", 
      content: "Chapter 3 goes here" 
     } 
    ]; 
+0

우리가 어떻게 알 수처럼에서 매개 변수를 잡아 필요가 이미 컨트롤러에서 당신은 $ stateParams 포함 시켰이

<ul> <li ng-repeat="chapter in chapterList"> <a ui-sref="books({chap: chapter.chapter})">{{chapter.chapter}}</a> </li> </ul> 

같은 일을 할 수 있을까? scope.chapterList가 무엇인지, $ scope.getArticle이 무엇인지 알려주지 않았습니다. 모델을 모른 채 사용 방법을 알 수는 없습니다. –

+0

@JBNizet 내 나쁜, 거기 :) –

+0

그래서, 당신은 '{{ c.content }}'이 필요합니다. 그리고 $ scope.remainingChapters를 다음 장에서 시작하여 하위 배열로 설정해야합니다. 너 뭐 해봤 니? 구체적인 문제가 뭐야? 그리고 장 번호 대신 숫자 대신 문자열을 사용하는 이유는 무엇입니까? –

답변

0

이 상태 매개 변수와 함께 시작하려면 여기를 너무 여러 질문이 있습니다. 상태 매개 변수에서는 상태의 params에 대한 기본값을 선언 할 수 있습니다.

.state('books', { 
     url: '/book/chapter/:chap', 
     templateUrl: "views/chapter.html", 
     params: { chap: null} 
    }) 

기본값은 null입니다. 아마도 당신은 항상 1 장을 기본으로하고 싶습니까? 이 경우 params: {chap: '1'}을 사용할 수 있습니다 (문자열을 사용하고 있으므로). 상태에 값을 전달하려면 여러 가지 방법이 있습니다. ui-sref을 사용한다고 가정하면 링크에서 직접 매개 변수 값을 전달할 수 있습니다.

ui-sref="books({ chap: 3 })" 

그러나 ng-repeat를 사용하여 개체의 링크 목록을 갖고 싶습니다. 그래서 당신은 그래서 당신은 너무

이 이
angular 
.module('BookLibrary') 
.controller("ChapterController", ["$scope","$stateParams", 
"ChapterControllerService", function($scope, $stateParams, 
ChapterControllerService){ 

    $scope.currentChapter = $stateParams.chap; 

    $scope.chapterList = ChapterControllerService.chapters; 
    $scope.getArticle = chapterList[0].chapter; 

}]); 
관련 문제