SRM UI插件增强功能

时间:2015-11-24 13:54:33

标签: sapui5

有人能指出我的代码有什么问题。我已在标准js文件(SearchResult.view.js)上成功添加了自定义字段。我知道这不是关于如何添加自定义字段的最佳做法。所以我实现了一个用于添加自定义字段的预发布方法。

不幸的是,当我将自定义代码块移动到pre post方法时,它添加了多行,而不是添加一行(字段)。我尝试创建一个计数器,但它也不起作用

以下是我的自定义js代码。提前谢谢!

function ADDCUSTOMFIELD1(){
 
};
 
ADDCUSTOMFIELD1.prototype.CUSTOM_POST_EXIT = function(methodName,view,controller, methodSignaure) {
 
if (!sap.ui.getCore().byId("ni_home"))
   return;
else add_custom_item();
};
 
 
function add_custom_item(){
if (sap.ui.getCore().byId("subMatrix")){
   // Supplier Name
   matrixSubRow = new sap.ui.commons.layout.MatrixLayoutRow();
   control = new sap.ui.commons.Label({
     text : Appcc.getText("SUPPLIER_TEXT") + ":"
   });// control.addStyleClass("search_middle_spacing");
   matrixCell = new sap.ui.commons.layout.MatrixLayoutCell();
   matrixCell.addContent(control);
   control = new sap.ui.commons.Label();
   control.bindProperty("text", "vendor_name");
   if (sap.ui.getCore().getConfiguration().getRTL()) {
     control.addStyleClass("search_middle_spacingNewRTL");
     Appcc.addStyleClass(control, 'search_middle_spacingNew', true);
   } else
     control.addStyleClass("search_middle_spacingNew");
   matrixCell.addContent(control);
   // control = new sap.ui.commons.Label();
   // control.bindProperty("text", "itm_price");
   // control.addStyleClass("search_middle_spacing");
   // matrixCell.addContent(control);
   matrixSubRow.addCell(matrixCell);
   sap.ui.getCore().byId("subMatrix").addRow(matrixSubRow);
}
 
}

1 个答案:

答案 0 :(得分:1)

您的自定义代码块会添加多行,因为为视图上的每个事件调用CUSTOM_POST_EXIT函数。触发单个视图上的多个事件(beforerender,render,ondatamodelloaded等)。 methodName参数是事件的名称。试试这个

function ADDCUSTOMFIELD1() {};

ADDCUSTOMFIELD1.prototype.CUSTOM_POST_EXIT = function(methodName, view, controller, methodSignaure) {
    var viewId = controller && controller.getView().getId();
    console.log(viewId, methodName)

    if (viewId === 'name_of_your_view' && methodName === 'onDataModelLoaded')
        //implement your customization
    }
}

您应该会在每个视图中多次为页面上的每个视图调用此函数。

因此,您应该检查调用CUSTOM_POST_EXIT方法的视图和eventName,并仅在1个视图/事件组合中实现自定义。