extjs将参数传递给窗口

时间:2014-07-08 15:42:18

标签: extjs window

我无法将数据发送到extjs中的新窗口。根据{{​​3}}的答案,我在新窗口中将窗口属性设置为我需要的值:

function OpenAddSampleWindow(datasetid)
{
  var VIEW_WIDTH = $(window).width();   // returns width of browser viewport
  var VIEW_HEIGHT = $(window).height();   // returns height of browser viewport



  win = Ext.create('widget.window', {
    title: 'Add Sample',
    id: 'AddSampleWindow',
    closable: true,
    closeAction: 'destroy',
    width: VIEW_WIDTH,
    minWidth: 600,
    height: VIEW_HEIGHT,
    minHeight: 400,
    modal: true,
    layout: 'fit',
    items : [{
       xtype : "component",
       autoScroll: true,
       autoEl : {
       tag : "iframe",
       src : "sample_add.html"
    }
  }]
 });
 win.datasetid=datasetid;
win.show();
return win;
}

然后,新窗口的javascript具有以下在页面加载时运行的函数:

Ext.onReady(function(){
    alert(window.datasetid);
});

警告框中显示的所有内容都是"未定义"我也尝试过win.datasetid,但后来我得到一个错误,即获胜未定义。

我做错了什么?我该如何访问这些数据?

1 个答案:

答案 0 :(得分:0)

window.datasetid不起作用,因为您正在警告浏览器window对象上的非标准属性。 win.datasetid可能不起作用,因为您没有调用OpenAddSampleWindow函数。这仍然是不好的做法,因为你使用全局来获得对胜利的引用。我认为更好的解决方案是不使用全局。

    function OpenAddSampleWindow(datasetid)
{
  var VIEW_WIDTH = $(window).width();   // returns width of browser viewport
  var VIEW_HEIGHT = $(window).height();   // returns height of browser viewport

  var win = Ext.create('widget.window', {
  //...
return win;
}

然后调用该函数,然后根据需要调用局部变量。

Ext.onReady(function(){
    var winA2 = OpenAddSampleWindow('a1');
    alert(winA2.datasetid);
})