- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正如标题所说,我有一个关于最佳实践/良好编码范围的简单问题。在我的组件中,我经常需要从 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/
正如标题所说,我有一个关于最佳实践/良好编码范围的简单问题。在我的组件中,我经常需要从 View 中访问元素。所以现在我想知道,是否应该使用 sap.ui.getCore().byId(ID) 方法来
我创建了一个 UI5 应用程序,现在想使用 sap.ui.getCore().byId(id) 访问现有控件。在同一个 Controller / View 中,我可以通过 this.byId(id)
使用时能知道区别和性能吗: const myControl = this.getView().byId("myIDhere"); const myControl = this.byId("myIDhe
我是一名优秀的程序员,十分优秀!