gpt4 book ai didi

javascript - 使用 new Function() 和字符串创建 SAPUI5 控件

转载 作者:行者123 更新时间:2023-12-03 09:01:20 25 4
gpt4 key购买 nike

这个问题是this的延续一个。

我有一个字符串格式的 SAPUI5 控件列表,并提取我使用的所需控件:

var sDefaultControlConstructor = "new sap.m.Input()"; 
var sConstructor = "return " + sDefaultControlConstructor;
var oConstructor = new Function(sConstructor);
var oField = oConstructor();

我得到的 oField 对象在控制台中如下所示:

M.c…s.f {bAllowTextSelection: true, mEventRegistry: Object, sId: "id", mProperties: d, mAggregations: Object…}

问题是我无法使用 sap.ui.getCore().byId() 函数获取创建的对象。

我寻找我创建的对象和“正常”创建的对象之间的差异

var oField = new sap.m.Input();

它看起来像这样:

d {bAllowTextSelection: true, mEventRegistry: Object, sId: "id", mProperties: d, mAggregations: Object…}

显然,这两个对象是不同的。

问题是如何使用new Function()创建第二种格式的控件。

谢谢。

最佳答案

好的,我已经找到解决办法了。我声明该控件是错误的 - 每个控件的 id 都是在创建该控件时由用户指定的,而当用户没有为该控件指定任何 id 时,它会自动指定。

所以,当我这么做的时候

var sDefaultControlConstructor = "new sap.m.Input()"; 
var sConstructor = "return " + sDefaultControlConstructor;
var oConstructor = new Function(sConstructor);
var oField = oConstructor();

我的控制oField使用自动生成和分配的 ID 创建。

当我之后给这个控件提供 id 时 -

oField.sId = "someID";

sap.ui.getCore().byId("someID"); 无法看到此控件(老实说,我不知道为什么。它总是返回 undefined )。

要解决此问题,需要在创建控件时分配控件的 id:

var oConstructor = new Function("a", "return new sap.m.Input(a)");
var oField = oConstructor({id:'someID'});

或者

var sId = 'someID';
var oConstructor = new Function("a", "return new sap.m.Input(a)");
var oField = oConstructor({id:sId});

HERE是上述两个声明(有效和无效)的 JSBIN 示例。

关于javascript - 使用 new Function() 和字符串创建 SAPUI5 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32295714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com