过滤一系列控件并对其进行操作

时间:2016-09-21 18:53:17

标签: javascript refactoring sapui5 logical-operators

背景:在达到某个状态后,用户不应该能够修改UI中表单字段中的数据。

UI达到此状态后,需要禁用的输入字段少于40个。

目前,实现是搜索所有可能控件(数组600)的数组,并且唯一与条件中的控件的id不匹配的控件将被禁用。

element.getId()的示例将是“__xmlview2--SaveBtn”,“__xmlview2-Page-SaveBtn”。这些基本上都是控件的id。

//for each control that is not the following controls perform the logic within this statement.

 controls.forEach(function(element){
    if(element.getId().indexOf("Page-") == -1 &&
       element.getId().indexOf("ControlName1") == -1 &&
       element.getId().indexOf("ControlName2") == -1 &&
       element.getId().indexOf("ControlName3") == -1 &&
       element.getId().indexOf("ControlName4") == -1 && 
       element.getId().indexOf("ControlName5") == -1)  {

            //do the logic fr disabling fields here 
     )};

更清楚地编写此代码的最佳方法是什么,以便明白它的作用是什么?你会怎么做?感谢。

1 个答案:

答案 0 :(得分:1)

我建议将字符串放入数组中并使用Array#every再次检查。

var items = ["Page-", "ControlName1", "ControlName2", "ControlName3", "ControlName4", "ControlName5"],
    id = element.getId();

if (items.every(function (item) { return id.indexOf(item) == -1; })) {
    // do the logic for disabling fields here 
)};