2017-03-23 8 views
1

ui-Router를 사용하여 Angularjs의 한보기에서 다른보기로 일부 값을 전달하려고합니다.
$ rootScope를 사용하여 데이터를 저장하거나 새로운 서비스를 만들고 싶지 않습니다. (작은 선을 넘기는 많은 뷰를 가지고 있으므로 코드 몇 줄에 새로운 jsfile을 작성하는 것이 재미 있지 않습니다.) 내가하고 싶은 것을하는 슈퍼 축소 된 예는 다음과 같습니다보기보기의한 경로보기에서 다른보기로 데이터 전달

컨트롤러 1
$scope.goodFood = 10 $scope.badFood = 2

컨트롤러 2
$scope.results = 10 - 2 (from view 1's scope)

이 할 수있는 빠른 방법이 있나요 이런 종류의 작전들?

+0

$ stateParams https://github.com/angular-ui/ui-router/wiki/URL-Routing – yBrodsky

+0

stateparams는 상태를 변경하는 데 사용되지만 여기서는 여러 개의보기 (템플릿 및 컨트롤러)가 포함 된 단일 상태에 있습니다. . – Jamie

+0

param을 하위 뷰에 전달하지 않는 이유는 무엇입니까? – yBrodsky

답변

1

$ rootScope를 사용하여 데이터를 저장하거나 새 서비스를 만들고 싶지 않습니다. 몇 줄의 코드를위한 새로운 jsfile을 작성하는 것은 재미 없다)

새로운 데이터 비트를 위해 새로운 서비스를 만들 필요가 없다. 간단히 객체와 값 서비스를 만들 :

app.value("viewData", {}); 

그런 다음 단순히 필요에 따라 새 속성을 추가 : 가치 서비스로

app.controller("viewCtrl", function(viewData) { 
    viewData.newProp = "new info"; 
    console.log(viewData.oldProp); 
}); 

개체의 내용에 변경보기 변경을 살아남을 것입니다, 싱글이다.

0

가장 쉬운 방법은 모든 데이터를 경로 또는 쿼리 문자열을 통해 $ routeParams에 직접 저장하는 것입니다. 당신은 당신이 따라하고 싶은 방법을 지정한 이후

routeUrl: /foods/:quality/:stars 

다음 컨트롤러에서 당신이

$routeParams.quality - $routeParams.stars 
1

에 액세스 할 수 있습니다, 당신은 만들어야합니다

$stateProvider 
    .state('view2', { 
     url: "/view2/:param1/:param2", 
     templateUrl: 'view2.html', 
     controller: function ($stateParams) { 
      console.log($state.params.param1+"-"+$state.params.param2); 
     } 
    }); 

어디 이제까지 당신을에서 다음 전화하기를 원하시는 분

$state.go('view2',{param1:'10', param2:'2'}); 

그러나 일반적으로 이러한 값은 서비스 또는 저장되어있는 곳에 보관하는 것이 좋습니다. 응용 프로그램이 커지면 계산할 속성을 더 많이 사용해야 할 수도 있습니다.

+1

매개 변수가 URL에 나타나지 않습니다. [상태 URL에 매개 변수를 지정하지 않고 매개 변수 사용] (https://github.com/angular-ui/ui-router/wiki/URL-Routing#using-parameters-with-specifying)을 참조하십시오. - 주 - 상태 - URL) – georgeawg