2013-02-23 73 views
1

我正在尝试使用链接到使用iframe的外部应用程序的拉力赛内部的自定义页面。在运行期间,我收到了与Rally的sdk.js文件相关的一个javascript错误。与sdk.js相关的Javascript错误

我做错了什么?

JavaScript错误:用于我的自定义页面

Javascript error from sdk.js

代码:

<script type="text/javascript" src="/apps/2.0p4/sdk.js"></script> 

<script type="text/javascript"> 
    Rally.onReady(function() { 
     Ext.define('CustomApp', { 
      extend: 'Rally.app.App', 
      componentCls: 'app', 

      launch: function() {  

     var user = this.getContext().getUser(); 
      var projectId = Rally.environment.getContext().getProject().ObjectID; 
     document.write('<div id="Timesheet"><iframe src="https://myserver/Entry.aspx?RallyUserName=' + user.UserName + '&RallyProject='+ projectId +'" height=90% width=100% style="border-top-width: 0px;border-right-width: 0px;border-bottom-width: 0px;border-left-width: 0px;"></iframe></div>');     

      }, 


     });    

     Rally.launchApp('CustomApp', { 
      name: 'Timesheets' 
     }); 
    }); 
</script> 

问候, 圣保罗

回答

0

当你越来越深的SDK往往是有帮助的,包括SDK-debug.js而非sdk.js.内部奇怪的错误你会得到一个更好的堆栈跟踪,可以帮助你追踪发生了什么。

在这种情况下,您的document.write代码正在吹走应用程序希望存在的dom元素。使用分机来创建DOM元素,你应该准备就绪:

Ext.define('CustomApp', { 
    extend: 'Rally.app.App', 
    componentCls: 'app', 
    items: [ 
     { xtype: 'container', itemId: 'Timesheet' } 
    ], 

    launch: function() { 
     this.down('#Timesheet').add({ 
      xtype: 'component', 
      autoEl: { 
       tag: 'iframe', 
       src: '', 
       //... 
      } 
     }); 
    } 

或者从应用程序内的任何容器或组件,您可以随时拨打getEl(),并直接与DOM元素工作。

+0

使用您的示例解决了问题。谢谢 – user2052053 2013-02-23 22:50:47

0

我建议你使用自定义URL应用这一需求:

Add App...

Custom URL

+0

感谢您的回复,但我的外部URL是动态的。它必须包含用户电子邮件和所选项目。使用自定义URL我只能做到静态。 – user2052053 2013-02-23 22:15:42