2015-04-01 25 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