angularjs使用HTML5 telerik_ReportViewer [英] angularjs using HTML5 telerik_ReportViewer

查看:533
本文介绍了angularjs使用HTML5 telerik_ReportViewer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

想在我的角度应用程序中使用telerik_ReportViewer。可这一个指令来完成?

 <脚本类型=文/ JavaScript的>
    $(#reportViewer1)
        .telerik_ReportViewer({
            的serviceUrl:/ API /报告/
            templateUrl:/ReportViewer/templates/telerikReportViewerTemplate-8.1.14.618.htmll',
            reportSource:{
                报告:Telerik.Reporting.Examples.CSharp.ProductCatalog,CSharp.ReportLibrary
                参数:{
                    CultureID:恩
                }
            }
        });
< / SCRIPT>

想传递$范围变量的报告reportsSource和参数。

这是目前我的控制器和它的作品,但它是一个黑客。

  angular.module('鸭$ P $支持度')。控制器('reportviewerController',['$范围,$位置',
功能($范围,$位置){    $ scope.ReportName ='Default.trdx';    $范围。在$('REPORTNAME',函数(EV,数据){
        如果(ev.targetScope == $范围)回报;
        $ scope.ReportName = data.Report;
        $ scope.ReportViewChange();
    });    $ scope.ReportView =功能(名称){
        $(#reportViewer1)
            .telerik_ReportViewer({
                的serviceUrl:HTTP://localhost/Reporting.API/api/reports/
                templateUrl:../content/templates/telerikReportViewerTemplate-9.0.15.324.html',
                reportSource:{
                    报告:$ scope.ReportName,
                    '的parameterValues​​:{DocumentNumber:''}
                }
            });
        }
    $ scope.ReportViewChange =功能(){
        VAR观众= $(#reportViewer1)的数据(telerik_ReportViewer);
        viewer.reportSource({
            报告:$ scope.ReportName,
            '的parameterValues​​:{DocumentNumber:''}
        });
        viewer.refreshReport();
    }}])


解决方案

我在一个指令包裹着我。还是有点哈克但直到Telerik的发布报告观众更纯净的角度版本可能是最好的你可以做。

 函数报告($编译){    VAR连接=功能(范围,元素,ATTRS){        $('#ReportViewer1')。telerik_ReportViewer(
            {
                错误:功能(数据){
                    警报(数据);
                },
                reportSource:{
                    报告:Reports.blankReport,报告
                },
                的serviceUrl:'/ API /报告/',
                templateUrl:/ReportViewer/templates/telerikReportViewerTemplate-9.0.15.324.html',
                准备:功能(){
                    this.refreshReport();
                }
            });
    };    返回{
        限制:'E',
        templateUrl:应用程序/指令/报告/ template.html',
        链接:链接,
        范围: {
            内容:'=',
            REPORTNAME:@reportname
        }    };
}VAR应用= angular.module('timebanking')指令(报告,报告)。

模板

 < D​​IV ID =ReportViewer1的风格=高度:900px;> < / DIV>

用法

 <报告REPORTNAME ='blankreport'>< /报告>

Trying to use telerik_ReportViewer in my angular application. Can this be accomplish in a directive?

<script type="text/javascript">
    $("#reportViewer1")
        .telerik_ReportViewer({
            serviceUrl: "/api/reports/",
            templateUrl: '/ReportViewer/templates/telerikReportViewerTemplate-8.1.14.618.htmll', 
            reportSource: { 
                report: "Telerik.Reporting.Examples.CSharp.ProductCatalog, CSharp.ReportLibrary",
                parameters: {
                    CultureID: "en"
                }
            }
        });
</script>

would like to pass on $scope variables to the reports reportsSource and parameters.

This is currently my controller and it works but its a hack.

angular.module('AppReport').controller('reportviewerController', ['$scope','$location',
function ($scope, $location) {

    $scope.ReportName = 'Default.trdx';

    $scope.$on('ReportName', function(ev, data) {
        if(ev.targetScope == $scope) return;
        $scope.ReportName = data.Report;
        $scope.ReportViewChange();
    });

    $scope.ReportView = function (name){
        $("#reportViewer1")
            .telerik_ReportViewer({
                serviceUrl: "http://localhost/Reporting.API/api/reports/",
                templateUrl: '../content/templates/telerikReportViewerTemplate-9.0.15.324.html',
                reportSource: {
                    'report':  $scope.ReportName,
                    'parameterValues':{ DocumentNumber : ''}
                }
            });
        }
    $scope.ReportViewChange = function() {
        var viewer = $("#reportViewer1").data("telerik_ReportViewer");
        viewer.reportSource({
            'report': $scope.ReportName,
            'parameterValues': {DocumentNumber: ''}
        });
        viewer.refreshReport();
    }

}])

解决方案

I wrapped my in a directive. Still a bit hacky but until Telerik release a more pure angular version of the report viewer probably best you can do.

function report($compile) {

    var linker = function (scope, element, attrs) {

        $('#ReportViewer1').telerik_ReportViewer(
            {
                error: function (data) {
                    alert(data);
                },
                reportSource: {
                    report: 'Reports.blankReport, Reports'
                },
                serviceUrl: '/api/reports/',
                templateUrl: '/ReportViewer/templates/telerikReportViewerTemplate-9.0.15.324.html',
                ready: function () {
                    this.refreshReport();
                }
            });
    };

    return {
        restrict: 'E',
        templateUrl: 'app/directives/Report/template.html',
        link: linker,
        scope: {
            content: '=',
            reportname: '@reportname'
        }

    };
}

var app = angular.module('timebanking').directive("report", report);

Template

<div id="ReportViewer1"  style="height: 900px;"> </div>

Usage

 <report reportname="'blankreport'"></report>

这篇关于angularjs使用HTML5 telerik_ReportViewer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆