我对sapui5有问题,我有一个输入框,如您在下面的代码中所见。
输入框内的数据是使用模型设置的,但是lostFocusItem
函数仅在我直接将值键入输入框时才起作用,而在使用模型设置值时不起作用。
...
<t:Column autoResizable="true" width="300px">
<Label text="{i18n>ItemCode}" required="true"/>
<t:template>
<Input id="Inp_ItemCd" value="{model1>itemCd}" showValueHelp="true" valueHelpRequest="otherFunction" change="lostFocusItem"/>
</t:template>
</t:Column>
...
...
lostFocusItem: function(oEvent){
console.log("inside function lostFocusItem");
},
...
谢谢。
答案 0 :(得分:0)
尝试liveChange是因为库中不存在事件更改,但是事件liveChange。也许不推荐使用?
答案 1 :(得分:0)
@Marc提到change
事件是Input的一部分,而不是模型的一部分。因此,仅当您更改实际输入而不是绑定值时才触发它。确实如此,但是有一种解决方法。
您可以使用输入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);
}
};