如何使用xml模型实现sap.m.Input的建议?

时间:2016-06-06 12:08:41

标签: sapui5 sap.m

您好我在输入sap.m时正在处理实时建议。输入的值将用于使用java servlet从mysql db获取数据。结果以xml的形式返回。

以下是视图中sap.m.Input的代码,

var suggestItem = new sap.ui.core.Item(this.createId("item"),{
        text:"text()"     
        })
var inputUser = new sap.m.Input(this.createId("idUser"),{
            placeholder: "{i18n>userid}",
            type:"Number",
            showSuggestion:true,
            suggest:[oController.showSuggestion, oController]
        }).addStyleClass("inputPadding").bindAggregation("suggestionItems","/plants/plant_name",suggestItem)

这是在建议事件

期间调用的控制器中的函数
showSuggestion:function(oEvent){

  mthis = this
  if(!this.getView().byId("idUser").getModel("sample"))
  {
  var sModel = new sap.ui.model.xml.XMLModel();
  this.getView().byId("idUser").setModel(sModel,"sample")
  }

var xml = sampleXml(this.getView().byId("idUser").getValue())

  ws_sample(xml,function(msg){
  xmldoc = jQuery.parseXML(msg);
  console.log(xmldoc)
  mthis.getView().byId("idUser").getModel("sample").setData(xmldoc)

})
}

来自服务器的xml文档将如下所示

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sample>
    <plants>
        <closed>0</closed>
        <district_id>0</district_id>
        <plant_id>7777</plant_id>
        <plant_name>xyz</plant_name>
    </plants>
    <plants>
        <closed>0</closed>
        <district_id>0</district_id>
        <plant_id>7778</plant_id>
        <plant_name>abc</plant_name>
    </plants>
    <plants>
        <closed>0</closed>
        <district_id>0</district_id>
        <plant_id>7779</plant_id>
        <plant_name>ghi</plant_name>
    </plants>
</sample>

我正在尝试使用plant_name填充建议项目。

仅供参考我将xml文档设置为sap.m.Inputs模型,而不是xml字符串。

运行此代码时没有错误,但是当我输入时没有任何建议。

非常感谢任何形式的帮助。

TIA。

1 个答案:

答案 0 :(得分:0)

您正在错误地指定路径。

text

Item属性应该是模型中属性的路径,该路径相对解析为bindAggregation方法中指定为“/ plants”的路径。

var suggestItem = new sap.ui.core.Item(this.createId("item"), {
    text: "{plant_name}"
})
var inputUser = new sap.m.Input(this.createId("idUser"), {
    showSuggestion: true,
    suggest: [oController.showSuggestion, oController]
}).addStyleClass("inputPadding").bindAggregation("suggestionItems", "/plants", suggestItem);

Here正在制作演示。