SAPUI5 保存奇怪行为的变体键

  • 本文关键字:保存 SAPUI5 sapui5 variant
  • 更新时间 :
  • 英文 :


我正在尝试使用sap.ushell.Container的个性化服务在SAPUI5中实现变体管理。我已经编写了保存,管理(删除,重命名(并从下拉列表中选择变体的功能。但是,当我在下面提到的方法中选择变体时,我看到了奇怪的行为。

onSelectVariant: function (oEvent) {
var sSelectedVariantKey = oEvent.getParameter('key');

假设我有现有的变体"A1"、"A2"和"A3"。 当我保存为具有新值的新变体(我们称之为"X1"(时,将创建新变体。然后我从下拉列表中选择另一个已经存在的变体(A1 或 A2 或 A3(,我看到相应的值。现在我再次选择新创建的变体 X1,但我没有看到新值。

当我调试上述方法时,我看到对于所有现有变体,oEvent.getParameter('key')返回变体索引,如 0,1,2,3 等,但对于新创建的变体 X1,它返回值'sv1579082806311',因此在变体集中找不到它

oPersonalizationVariantSet.getVariant(sVariantKey)

然后它不显示新值。

如果我再次运行该程序,我看到以前创建的变体 X1 现在显示正确的值,因为该方法oEvent.getParameter('key')返回索引而不是"sv...."。 但是,如果我现在创建一个新的变体 X2,X2 也会发生同样的问题。

我在云WebIDE上运行该应用程序,而不是在FIORI启动板上运行。

有人可以帮助我在保存变体时可能出现什么问题吗?

谢谢

溴 尼莱什·普拉尼克

我最近遇到了完全相同的问题。我假设这是变体管理控件中的一个错误。您可以在openui5 github项目中创建一个问题。

我也遇到了这个问题,并得出结论,这是 VM 控制中的一个错误。 它为新保存的变体提供了一个新的长密钥。 在 onSelect 函数的 oEvent 参数 "key" 中,您将看到这个新键。

我通过向绑定变体的 JSON 对象添加一个新属性来解决这个问题。 在变体保存事件中:

tableModel.oData.tabVariants.push({key: VariantParam.key, 
text: VariantParam.name, 
newKey:this.oVariant.getVariantKey()})

然后在变体选择事件中:

var selectedKey = oEvent.getParameter("key");
var variant = this.woTableSet.getVariant(selectedKey);
if(!variant){
//In this case its a newly created variant with an internal key
//This is a workaround for the key confusion in variants
selectedKey = tableModel.oData.tabVariants.find(t => t.key === 
selectedKey).newKey;
variant = this.woTableSet.getVariant(selectedKey)
if(!variant){return} //then I give up

}

您需要将自动生成的密钥替换为变体密钥:

const autoGeneratedKey = oEvent.getParameters().key;
this.oContainer.save().done(function (cb) {
const oVM = that.getView().byId("vm");
oVM.replaceKey(autoGeneratedKey, that.oVariant.getVariantKey());
oVM.setInitialSelectionKey(that.oVariant.getVariantKey());
}); 

相关内容

  • 没有找到相关文章

最新更新