SAP UI5 - 如何为控制器传递值?

Pap*_*apu 2 parameter-passing sapui5

我想在按钮按下时将值从视图传递给控制器​​.在视图中传递productJson这是一个对象.但我无法在控制器中检索该值.请帮助.

查看js:

 new sap.m.Button({
         text: "Add to Cart",
         press:[oController.addtoCartBtnPress,oController,productJson],
        })
Run Code Online (Sandbox Code Playgroud)

控制器js:

 addtoCartBtnPress:function(e,oView,productJson)
      {
      }
Run Code Online (Sandbox Code Playgroud)

结果:

oView and productJson values are returned as undefined.
Run Code Online (Sandbox Code Playgroud)

小智 9

数据应该是印刷机阵列中的第一个值.根据sap.m.Button 的sdk 文档:

按:fnListenerFunction或[fnListenerFunction,oListenerObject]或[oData,fnListenerFunction,oListenerObject]

监听器函数应该有2个参数:1 - 事件; 和2-数据.

onPressFn: function(evt, data) { ... }
Run Code Online (Sandbox Code Playgroud)

要获得视图,只需使用:

var view = this.getView();
Run Code Online (Sandbox Code Playgroud)
  • "this"将等于你传递的任何内容作为press数组中的第三个值,并且通常应该是控制器以匹配xml/html视图的行为.

在印刷机调用中传递数据的另一种方法是使用视图模型绑定,特别是如果您已经在视图中的其他位置使用该模型绑定.但这取决于你有多少产品和其他因素,所以我不认为它将是你的理想选择.

//in the view
var productModel = new sap.ui.model.json.JSONModel(productJson);
view.setModel(productModel, "product");

//in the controller:
var data = view.getModel("product").getData();
Run Code Online (Sandbox Code Playgroud)

  • 1.使用sap.ui.getCore().byId("idOfDesiredView")获取控制器引用.getController(); 前提条件:您必须在创建时为JS/HTML/XMLView提供唯一的ID.2.将所需数据附加到控制器之间的导航.3.全局存储控制器引用 (2认同)