문제

다음을 고려한 ui-라우터 구성:

$stateProvider
  .state('app', {
    url: "/app",
    abstract: true,
    templateUrl: "templates/menu.html",
    controller: 'AppCtrl'
  })
  .state('app.feed', {
    url: "/feed",
    views: {
      'menuContent': {
        templateUrl: "templates/feed.html",
        controller: "FeedCtrl"
      }
    }
  })

나는 다음과 같은 링크에서 내 응용 프로그램:

<a ui-sref="app.feed({ feedId: 5 })">My Link</a>

나를 얻으려고 노력 feedId 에 국가 params:

angular.module('MyApp').controller('FeedCtrl', function($state) {
  console.log($state.params);
});

하지만,불행하게도, $state.params{}.

무엇이 잘못된 것입니까?

보너스 질문

제가 기대 FeedCtrl 을 초기화 모든 링크를 클릭하면,즉모든 시간에 상태가 변경되었을 app.feed.그래서,변경하는 경우 사 app.feed 국가 및 다른 국가 여러 번을 기대합 console.log 상을 여러 번 실행됩니다.하지만,그것은 다음과 같 ui-라우터 처음 상태 FeedCtrl 습니다.왜?

도움이 되었습니까?

해결책

전달하는 매개변수-우리는 우리가 그것을 정의:

 .state('app.feed', {
    url: "/feed/{feedId}",
    views: {
      'menuContent': {
        templateUrl: "templates/feed.html",
        controller: "FeedCtrl"
      }
    }

이 경우에는 우리가 그것을 정의로 {feedId}

더 보기

몇 가지 예:

  • '/user/{id:[^/]*}' -동일 '/user/{id}' 에서 이전의 예입니다.
  • '/user/{id:[0-9a-fA-F]{1,8}}' -이전과 유사한 예로,하지만 경기는 경우 id 매개변수로 구성되어 있의 1 8 육 자리입니다.
  • '/files/{path:.*}' -일치하는 URL 을 시작으로'/파일/는 경로의 나머지 부분으로 매개 변수는'경로'.
  • '/files/*path' -동감.특별기 위한 구문을 모두 잡아.

는 경우에 우리가 정의된 매개 변수입니다,우리는 탐색 중국과 다른 feedId 값...우리는 정말 보는 컨트롤러 FeedCtrl 은 reinstantiated.는 방법 ui-router 설계

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top