2014-10-09 3 views
2

나는 각 라우터를 사용하고, 나는 당신이 볼 수 그래서 2 라우팅 목록은 선택한 항목의 대시 보드 목록 하나와 다른 하나는있다한 경로에서 다른 경로로 값을 전달하려면 어떻게해야합니까?

angular.module("manageAbcApp", ["myApp", "ngRoute"]) 
     .config(['$routeProvider', function($routeProvider) { 
      $routeProvider 
       .when('/list', { 
        templateUrl: '/Scripts/app/views/abc/AbcList.htm', 
        controller: 'ListAbcController' 
       }) 
       .when('/view/:id', { 
        templateUrl: '/Scripts/app/views/abc/AbcDashboard.htm', 
        controller: 'DashboardAbcController' 
       }) 
       // more... 
       .otherwise({ 
         redirectTo: '/list' 
        }); 
     }]); 

아래와 같은 경로를 가지고있다.

목록 경로에서 일부 데이터가있는 표를 표시하는 목록보기가 선택되고 표시됩니다.이 표의 열 중 하나는 클릭 할 수있는 이름 열이고 클릭하면 경로가 href="#/view/{row.Id}"으로 변경됩니다.

잘 작동합니다.

그러나 이름이나 기타 세부 사항과 같은 일부 추가 매개 변수를 DashboardAbcController에 어떻게 전달합니까?

편집 : 나는이 두 컨트롤러에 공통된 서비스를 사용할 수 있다고 생각하고 ng-click 서비스의 일부 모델을 업데이트합니다. 그런데 사용자가 새 탭에서 내 링크를 열 수 있도록 옵션을 잃어 버리면 붙여 넣기, 공유 등을 할 수있는 옵션이 없어집니다.

+0

URL에서 재구성 할 수없는 다른 경로로 데이터를 전달하려는 경우 사용자가 새 탭에서 링크를 제대로 열고 복사, 붙여 넣기 등의 작업을 수행 할 수 없게됩니다. 주식 등? –

답변

2

무엇과 같이 약 : Demo

.when('/list', { 
    templateUrl: '/Scripts/app/views/abc/AbcList.htm', 
    controller: 'ListAbcController' 
}) 
.when('/view/:id/:name/:other/:details', { 
    templateUrl: '/Scripts/app/views/abc/AbcDashboard.htm', 
    controller: 'DashboardAbcController' 
}) 

, 당신과 같은 링크를 만들 수 있습니다

<a href="#/home/1/some_name/other/details?random=random">Home</a> 

참고 : 경로에 수정하고 싶지 않은 다른 매개 변수를 전달할 수 있습니다.

2

값을 지정하려면 $ rootscope를 사용하십시오. 전의. $ rootscope.name = '이름'또는 사용이 매개 변수를 얻을

.when('/view/:id?name=&id=', { 
    templateUrl: '/Scripts/app/views/abc/AbcDashboard.htm', 
    controller: 'DashboardAbcController' 
    }) 
관련 문제