未捕获的TypeError:无法读取未定义的属性'splice'

2020-08-22 14:54发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

尝试从JSON模型填充的表中删除单条记录或多条记录时出现此错误。

错误:

无法读取未定义的属性'splice'

 deleteRow:function(){
    var that = this;
    var oTable = that.getView()。byId(" tableId");
     var selectedContexts = oTable.getSelectedContexts(true);
     var oModel = oTable.getModel();
     var dataNode = oModel.getData();
     var aRows = oModel.getData.Transports;
      for(var i = selectedContexts.length-1; i> = 0; i--){
       var oThisObj = selectedContexts [i] .getObject();
       var index = $ .map(aRows,function(obj,index){
        if(obj === oThisObj){
         返回指数
        }
       });
       aRows.splice(index,i);
      }
 oModel.refresh(true);
 
  }
 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

尝试从JSON模型填充的表中删除单条记录或多条记录时出现此错误。

错误:

无法读取未定义的属性'splice'

 deleteRow:function(){
    var that = this;
    var oTable = that.getView()。byId(" tableId");
     var selectedContexts = oTable.getSelectedContexts(true);
     var oModel = oTable.getModel();
     var dataNode = oModel.getData();
     var aRows = oModel.getData.Transports;
      for(var i = selectedContexts.length-1; i> = 0; i--){
       var oThisObj = selectedContexts [i] .getObject();
       var index = $ .map(aRows,function(obj,index){
        if(obj === oThisObj){
         返回指数
        }
       });
       aRows.splice(index,i);
      }
 oModel.refresh(true);
 
  }
 
付费偷看设置
发送
7条回答
一只江湖小虾
1楼 · 2020-08-22 15:53.采纳回答

这是工作代码。 如果遇到类似情况,可以使用相同的情况。

 deleteCode:function(){

 var that = this;
    var oTable = that.getView()。byId(" tableID");
    var oModelDeletef = oTable.getModel();
    var aRows = oModelDeletef.getData()。EntirtySet;
     var aContexts = oTable.getSelectedContexts();
    for(var i = aContexts.length-1; i> = 0; i--){
     var oThisObj = aContexts [i] .getObject();
     var index = $ .map(aRows,function(obj,index){
      如果(obj === oThisObj){
       返回指数
      }
     });
     aRows.splice(index,1);
    }
    oModelDeletef.setData({
     EntirtySet:aRows
    });
       oTable.removeSelections(true);
 } 
小熊yu生菜
2楼-- · 2020-08-22 15:38

好的

请在

console.log(aRows)

console.log(index)

console.log(i)

我怀疑某个空值即将到来

此致

Venkat

太Q了
3楼-- · 2020-08-22 15:44

在其他注释的顶部,您忘记了getData的括号

 var aRows = oModel.getData.Transports; 

kr,Wouter

昵称总是被占用
4楼-- · 2020-08-22 15:46

是的,我注意到了,并对其进行了纠正。

能不能别闹
5楼-- · 2020-08-22 15:43

您正在循环选定的上下文并删除行。.如果第一行被删除,则行将更新为新长度,此后,如果您删除最后一个选定的上下文,则找不到拼接 当行长更新时,选定的上下文行

一种方法是使用过滤器选项或反向删除行

-Mahesh

Violet凡
6楼-- · 2020-08-22 15:35

好的,

请在

console.log(aRows)

console.log(index)<<的拼接语句之前添加console.log()语句/p>

console.log(i)

我怀疑某个地方会出现空值

关于此,

Venkat

打个大熊猫
7楼-- · 2020-08-22 15:57

尊敬的Raju

您的删除语句aRows.splice(index,i); -应该在for循环内-当条件为true时。

由于它在循环之外,因此不可见变量索引。 这就是为什么错误

问候,Venkat

一周热门 更多>