Rally SDK 外部开发 Rally.environment undefined

Rally SDK external development Rally.environment undefined

我在外部开发时无法使用Rally.environment.getContext()。我需要这个来在应用程序启动之前获取 ProjectOID 和 UserOID,所以我不能去 app.getContext() 因为它还没有被创建。

如何在外部开发时从 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-Debug tmpl): https://github.com/ssteffl/rally-app-builder/blob/master/templates/ext/App-debug.html.

但我想让它工作的主要原因是 PROJECT_OID 和 Rally.environment 在不在 运行 范围内时都是无效的自定义应用程序 Iframe,所以我的茉莉花测试失败了。我想让我的测试通过。我正在使用这个 jasmine.tmpl 进行测试,也许我必须手动添加 Rally.environment 就像我为 App-Debug 模板所做的那样:https://github.com/arring/MDO-RallyApps/blob/master/test/jasmine.tmpl

您似乎发现了一个我们在 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;