gpt4 book ai didi

this - .this 或 sap.ui.getCore().byId()

转载 作者:行者123 更新时间:2023-12-01 08:52:48 25 4
gpt4 key购买 nike

正如标题所说,我有一个关于最佳实践/良好编码范围的简单问题。在我的组件中,我经常需要从 View 中访问元素。所以现在我想知道,是否应该使用 sap.ui.getCore().byId(ID) 方法来获取我的元素或 this.getView().byId(ID ) 运算符。我想也许无论我选择哪两个,但我想更多地了解整个 sapui5 内容,也许有一种答案方式更喜欢一个解决方案。

编辑:也许我对我的要求不够清楚,现在它被纠正错了。我的问题是在组件的范围内。所以我想知道我是否应该通过 this 运算符或 sap.ui.getCore().byId(ID) 访问我的元素。我知道 this 运算符是什么等等,但我不知道哪个变体“更清晰”:

最佳答案

从当前 View 访问元素:

this.getView().byId(...)

从不属于当前 View 的另一个 View 访问元素(它不是嵌套 View ):

sap.ui.getCore().byId(...)

在我看来:如果你必须做后一个,你就做错了。通常,为了避免 id 冲突,所有 id 都应该加上前缀(自动完成,除非这是行为被覆盖)。这样做的缺点是您通常不知道前缀会是什么样子,因此上述语句对您没有多大帮助。

替代方案:

  • 可以通过 SAPUI5 事件总线处理跨 Controller 通信。然后订阅者处理 View 的更新。 View 的修改应始终由 View 的 Controller 处理。所以: Controller C1 修改 V1 = ok,C2 修改 V2 ok,C2 修改 V1 -> 坏主意。

  • 使用数据绑定(bind)。很多人有时似乎忘记了它不仅可以用来绑定(bind)值,还可以用来绑定(bind)如下的东西。下面的例子可以适应很多不同的问题:


//反模式 - 您必须对所有输入字段执行此操作
//这很快就会变得非常不方便。
this.getView().byId("myInput").setEnabled(false)。

这实际上是一种不好的方法。更好的方法是拥有一个模型——比如说“pageState”并将元素“启用”属性绑定(bind)到这个模型。例如。像这样:

<Input enabled="{pageState>/inputFieldsEnabled} ... />

然后在 Controller 中

this.getModel("pageState").setProperty("/inputFieldsEnabled", false);

关于this - .this 或 sap.ui.getCore().byId(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653107/

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