2013-02-23 46 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