我正在为报表的iframe创建一个视图。

<div id="aDialog"></div>


这是ReportView:

define(["jquery" ,
    "underscore" ,
    "backbone",
],function($, _, Backbone){
  var ReportView = Backbone.View.extend({
     el : "#agingFrame",
     initialize: function() {
         this.$el.html('<iframe src="http://ipadressofreportserver/jasper/blahblah"></iframe>');
     },
     render: function(){
     }
   });
   return ReportView;
});


然后,我有另一个视图,可以让用户打印上面的iframe,这是主要的视图操作:

 'printingReportIcon' : function(){
    var page = "http://localhost/Source/#ReportView";
    var $dialog = $('#aDialog')
            .load(page)
            .dialog({
                autoOpen: false,
                modal: true,
                height: 625,
                width: 500,
                title: "Some title"
            });
    $dialog.dialog('open');


问题

该对话框随即打开,其中包含ReportView中的所有源代码,但没有iframe。

不知道是什么原因造成的

最佳答案

我不确定,但是我认为问题在于ReportView尚未在第二个视图上实例化(渲染)。您只是获得该视图的相对URL,而不呈现内容。

尝试:


使用render方法在ReportView中呈现内容。
返回此内容并使用它来打开对话框。


我想这就是问题所在。

希望能帮助到你

09-28 00:33