使用路由时如何将参数传递给控制器​​?

时间:2015-06-04 06:45:55

标签: javascript angularjs html5 routes

在我的应用程序中,我使用ngRoute加载视图,

 .state('ReportViewer', {
            url: "/ReportViewer",
            controller: 'ReportViewerControl',
            templateUrl: "views/Report_viewer.html"
        })

我有一个搜索面板,用户可以在其中搜索报告,在选择报告时,它应该路由到另一个页面并在iframe中加载报告。当用户选择报告时,这是我的代码,

 $scope.goReport = function(report){
         $state.go('ReportViewer');
        }

我在配置中定义了一个常量,它根据报告选择动态变化

   .constant('Digin_ReportViewer','http://192.226.192.147:8080/api/repos/%3Ahome%3Aadmin%')

在这里,我需要通过报告'当用户选择报告时,变量为ReportViewerControl

这是我的ReportViewerControl

 routerApp.controller('ReportViewerControl', ['$scope', '$routeParams','Digin_ReportViewer',function($scope, $routeParams,Digin_ReportViewer) {

    //here i need to append the report url ,
    $scope.reportURL = Digin_ReportViewer+routeParams.report ; 
  $scope.trustSrc = function(src) {
       return $sce.trustAsResourceUrl(src);
    }
}
]);

1 个答案:

答案 0 :(得分:2)

你正在使用ui-router来配置路由,但是在ReportController中你正在使用$ routeParams.I希望你必须使用$ stateParams。

 routerApp.controller('ReportViewerControl', ['$scope', '$stateParams','Digin_ReportViewer',function($scope, $stateParams,Digin_ReportViewer) {

    //here i need to append the report url ,
    $scope.reportURL = Digin_ReportViewer+stateParams.report ; 
  $scope.trustSrc = function(src) {
       return $sce.trustAsResourceUrl(src);
    }
}
]);

你也必须从url或像这样的方法传递params

.state('ReportViewer', {
            url: "/ReportViewer",
            controller: 'ReportViewerControl',
            templateUrl: "views/Report_viewer.html",
            params: ['report']
        })

然后您可以像这样导航到它:

$scope.goReport = function(report){
         $state.go('ReportViewer', { 'report':'monthly' });
}

或者:

var result = { 'report':'monthly' };
  $state.go('ReportViewer', result);