2014-10-10 53 views
0

当创建新的窗口目前我使用jQuery创建一个对话框,并使用骨干像这样来填充它:Backbone.js的使用和jQuery

$("#" + dialogID).html(new MyView({model: MyModels}).el); 


$("#" + dialogID).dialog({ width: 950, 
          height: 500, 
          autoOpen: true, 
          dialogClass: dialogID, 
          position: { my: "center", at: "center", of: window }, 
          close: function(event, ui){ 
                  $(this).remove(); 
                 }, 
          title: "My dialog" 
          }); 

所有我想要做的是使这个新的窗口,以便用户可以所以我尝试:

var w = window.open(); 
var html = $("#" + dialogID).html(); 
$(w.document.body).html(new MyView({model: MyModels}).el); 

这几乎可以奏效。我失去了我的风格和一些功能丢失。有人可以建议如何解决这个片段,以便我的风格和功能恢复? (例如,我的数据表样式不见了,并且与原始窗口中的元素有一些交互)。

谢谢!

+0

你能为我们提供的jsfiddle链接? – alexmngn 2014-10-10 19:42:52

+0

嗨,很抱歉,但这都与其他代码纠缠在一起,并在本地运行。我尽可能提供示例,但希望这是明显的添加窗口vs对话框。 – SOUser 2014-10-10 19:47:12

回答

0

我可以建议你两种可能的解决方案:

创建应用程序中的后端系统将生成只需要脚本和样式的html页面的新路线。并且在它完成之后,请执行winsow.open('yournewroute')

2.描述的使用方法here。在普通的JavaScript看起来像

var w = window.open(''); 
w.document.write('<html><head><title>Dialog</title><link rel="stylesheet" type="text/css" href="styles.css"></head><body>'); 
w.document.write(new MyView({model: MyModels}).el); 
w.document.write('</body></html>'); 

你也可以用jQuery来做到这一点。

希望它有帮助。

更新

选择所有JavaScript的进口标签文件:

var $javascriptTags = $('script[type="text/javascript"]'); 
$(w.document.head).append($javascriptTags); 

同样的,样式表:

var $stylesheetTags = $('link[rel="stylesheet"]'); 
$(w.document.head).append($stylesheetTags); 
+0

嗨,对不起,如果我有很多样式表,我将如何使用jquery?谢谢! – SOUser 2014-10-11 23:33:08

+0

与使用jQuery处理html标记的方式相同。我已经更新了答案。 – 2014-10-12 20:43:22