2

设置对象是什么样的?我似乎无法用任何东西 updateSettings 并得到一些有趣的东西。我打印出 this.settings ,每次刷新时,它只记录一个没有值的原型对象。

这就是我的测试应用程序的样子。我将它放入 Rally 内部的面板中,而不是远程运行。

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

<script type="text/javascript">
    Rally.onReady(function() {
        /*global console, Ext */

        Ext.define('CustomApp', {
            extend: 'Rally.app.App',
            componentCls: 'app',

            launch: function() {
                //Write app code here
                console.log( "settings", this.settings );
                this.updateSettings( { Name: 'test', Value: Ext.JSON.encode( { test: "blah" } ) } );
            }
        });

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

1 回答 1

3

原来我使用的预览版有一个错误。 试图传递错误的偏好。请注意,首选项的范围是 App ID,而不是项目或工作区。由于它需要应用程序的 ID,因此在 Rally 之外运行时它不起作用。

错误是 updateSettings 函数缺少一行。您可以通过在您的应用程序定义中添加相同的函数来轻松地覆盖它(源代码包含在文档中不是很整洁吗?)只需创建一个这样的函数:

updateSettings: function(options){
  Rally.data.PreferenceManager.updateAppPreferences({
    appID: this.getContext().get('appID'),
    settings: options.settings,
    success: function(updatedSettings){
      Ext.apply(this.settings, updatedSettings);
      if(options.success){
        options.success.call(options.scope);
      }
    },
    scope: this
  });
}

因此,偏好对象应该像这样传递:

this.updateSettings( {settings: { test: "blah" ) } } );

然后,当它回来时, getSetting("test") 会给我“废话”。(它创建一个首选项,名称等于“test”,值等于“blah”,AppId 等于当前应用程序。

于 2012-07-30T17:53:13.893 回答