gpt4 book ai didi

sapui5 - 即使从模型更新了控件属性,也未触发控件事件

转载 作者:行者123 更新时间:2023-12-02 02:19:55 24 4
gpt4 key购买 nike

我有一个输入框,如下面的代码所示。

输入框中的数据是使用model#setProperty设置的,但我的onValueChange只有当我直接在输入框中输入值时才会触发。通过绑定(bind)操作值时不会触发。

<!-- ... -->
<table:Column xmlns:table="sap.ui.table">
<Label xmlns="sap.m" text="{i18n>ItemCode}" required="true" />
<table:template>
<Input value="{model1>itemCd}" change=".onValueChange" />
</table:template>
</table:Column>
<!-- ... -->
onValueChange: function(oEvent){
console.log("inside function onValueChange");
},

最佳答案

正如 @Marc 提到的 change 事件是输入的一部分,而不是模型的一部分。因此,只有当您更改实际输入而不是绑定(bind)值时才会触发它。这是真的,但有一个解决方法。

您可以使用输入fireLiveChange来实现它事件和格式化程序。

View.xml

<Input value="{path: 'ipModel>/text', formatter: 'assets.util.Formatter.triggerLiveChange'}" 
liveChange="ipLiveChange" />

Controller.js

onInit: function() {
this.setInputModel();
},
setInputModel:function() {
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData({ text: "Test Value"});
this.getView().setModel(oModel, "ipModel");
},
ipLiveChange: function(oEvent) {
console.log("LiveChange triggered!!");
}

Formatter.js

jQuery.sap.declare("assets.util.Formatter");
assets.util.Formatter = {
triggerLiveChange: function (value) {
this.fireLiveChange();
return (value);
}
};

关于sapui5 - 即使从模型更新了控件属性,也未触发控件事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57282115/

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