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

时间:2013-12-31 07:21:37

标签: parameter-passing sapui5

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

查看js:

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

控制器js:

 addtoCartBtnPress:function(e,oView,productJson)
      {
      }

结果:

oView and productJson values are returned as undefined.

1 个答案:

答案 0 :(得分:9)

数据应该是印刷机数组中的第一个值。根据sap.m.Button的sdk docs

  

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

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

onPressFn: function(evt, data) { ... }

要获得视图,只需使用:

var view = this.getView();
  • “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();