基于UserIterationCapacity的Agile Central应用设置调用无响应求助
兄弟,我之前在做Rally TimeboxScopedApp的时候也碰到过一模一样的问题——获取设置时代码直接卡壳,连个警告都没有,简直头大!结合你给出的代码片段和踩过的坑,我大概率能猜到问题出在哪,给你几个排查方向和完整的修复示例:
最可能的问题:getSettingsFields 实现不完整或有误
你代码里只写了 getSettingsFields: function() { r...,这明显没写完。这个方法必须返回一个完整的配置字段数组,而且每个字段的name要和defaultSettings里的key完全对应,否则Rally的设置系统会静默失败,直接导致后续获取设置的代码停摆。
完整的可运行示例代码
我把你需要的逻辑补全,你可以直接参考:
Ext.define('CustomApp', { extend: 'Rally.app.TimeboxScopedApp', componentCls: 'app', scopeType: 'iteration', // 根据你的需求改成release也可以 config: { defaultSettings: { hoursPerSp: 6, decimalsOnHoursPerSp: 1 } }, // 必须返回完整的设置字段配置数组 getSettingsFields: function() { return [ { name: 'hoursPerSp', // 和defaultSettings里的key严格对应 xtype: 'rallynumberfield', fieldLabel: 'Hours per Story Point', minValue: 0.1, maxValue: 24, allowBlank: false }, { name: 'decimalsOnHoursPerSp', // 同样严格对应 xtype: 'rallynumberfield', fieldLabel: 'Decimal Places for Hours', minValue: 0, maxValue: 3, allowBlank: false, integerOnly: true } ]; }, // 不要在initComponent里获取设置,launch才是安全的时机 launch: function() { try { // 安全获取设置,加上try-catch避免静默崩溃 const hoursPerSp = this.getSetting('hoursPerSp'); const decimals = this.getSetting('decimalsOnHoursPerSp'); console.log('Loaded settings:', hoursPerSp, decimals); // 这里继续你的核心逻辑,比如处理UserIterationCapacity this._renderCapacityCalculator(hoursPerSp, decimals); } catch (e) { console.error('Failed to load settings:', e); // 给用户显示错误提示 this.add({ xtype: 'component', html: `<p>Oops! Failed to load application settings: ${e.message}</p>` }); } }, _renderCapacityCalculator: function(hoursPerSp, decimals) { // 这里写你的UserIterationCapacity相关逻辑 this.add({ xtype: 'component', html: `<p>Current Settings: ${hoursPerSp.toFixed(decimals)} hours per Story Point</p>` }); } });
几个关键注意点
- 生命周期时机:别在
initComponent里调用getSetting,TimeboxScopedApp的设置初始化是异步的,launch方法才是组件完全初始化后执行的钩子,在这里获取设置最安全。 - 字段name匹配:
getSettingsFields里每个字段的name必须和defaultSettings里的key完全一致,大小写都不能错,否则Rally找不到对应设置。 - 错误捕获:一定要用
try-catch包裹获取设置的代码,不然出问题时控制台都没报错信息,根本没法调试。 - 调试技巧:打开浏览器开发者工具(F12)的控制台,即使代码看起来静默停止,控制台里大概率会有隐藏的错误提示,帮你定位问题。
内容的提问来源于stack exchange,提问作者Michael Østerberg Jakobsen
相关产品推荐
相关产品推荐

