2015-04-01 24 views
1

我在外部開發時無法使用Rally.environment.getContext()。我需要這個在應用程序啓動之前獲取ProjectOID和UserOID,所以我不能去app.getContext(),因爲它還沒有被創建。Rally SDK外部開發Rally.environment undefined

如何在外部開發時從Rally對象中獲取UserOID和ProjectOID。

即時通訊使用sdk2.0,我不想使用hangman變量,因爲網站說他們已被棄用。

編輯:下面是每個項目+用戶組合的設置的示例,它不在本地工作,並且Rally.environment沒有設置,所以我不能從那裏得到。

var SETTINGS_TOKEN = __PROJECT_OID__ + '-' + __USER_OID__; 
... 
config: { 
     defaultSettings: (function(){ 
      var s = {}; 
      s['QueryFilter' + SETTINGS_TOKEN] = ''; 
      return s; 
     }()) 
    },    
    getSettingsFields: function() { 
     return [{ 
      name: 'QueryFilter' + SETTINGS_TOKEN, 
      xtype: 'textfield', 
      label: 'Query Filter' 
     }]; 
    }, 

編輯2:這似乎暫時外部運行程序(App-調試TMPL)工作: https://github.com/ssteffl/rally-app-builder/blob/master/templates/ext/App-debug.html

但爲什麼我想要得到這個工作的主要理由是,PROJECT_OID和Rally.environment都無效時,自定義應用iframe內不運行,所以我的茉莉花測試失敗。我想讓我的測試通過。我正在使用這個jasmine.tmpl進行測試,也許我必須手動添加Rally.environment,就像我爲應用調試模板所做的那樣:https://github.com/arring/MDO-RallyApps/blob/master/test/jasmine.tmpl

+0

你能發佈一些你正在嘗試做預啓動的示例代碼嗎? – 2015-04-02 03:18:05

+0

我有項目和用戶特定的應用程序設置,並且我使用hangman變量來獲取用戶和項目的OID,但這不適用於外部。如果這沒有幫助,我會發布代碼 – spsteffl 2015-04-02 04:52:14

+0

我認爲這可能會幫助,如果你可以發佈你的代碼。我想我可以想象你在做什麼,我敢打賭,我們可以讓它工作... – 2015-04-02 13:40:11

回答

1

看起來像你發現了一個非常堅固的邊緣案例,在SDK中將用戶+項目範圍首選項考慮在內。我想我可能會繼續使用hangman變量,因爲唯一的其他解決方法是代碼太多。它們被認爲已被棄用,但它們不會很快消失,因爲目錄中仍然有大量基於SDK 1.x的應用程序仍需要它們正常運行。我可能只是用一些默認值做一些理智的檢查:

var projectOid = '__PROJECT_OID__'; 
var userOid = '__USER_OID__'; 
if(projectOid === '__PROJECT' + '_OID__') { 
    projectOid = 123456; //well known default for testing 
    userOid = 234567; //well known default for testing 
} 
var SETTINGS_TOKEN = projectOid + '-' + userOid; 
+0

不錯的主意。謝謝。 – spsteffl 2015-04-13 14:55:43