无法读取未定义的属性"调用"

2020-09-21 18:55发布

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

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


你好

在成功绑定视图的数据后,我正在尝试执行一些操作。 我认为最好的主意是在 attachModelContextChange 方法的回调中进行操作。 定义了哪种方法为回调并将事件侦听器附加到视图后,当我尝试将数据绑定到视图时,出现错误: 无法读取未定义的属性" call"。 我要在下面粘贴我的控制器代码片段和堆栈跟踪。

 onInit:function(){
     var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
     oRouter.attachRouteMatched(this.routeMatched,this);
 },


 routeMatched:函数(oEvent){
     var sEntityPath,
         oParameters = oEvent.getParameters();

     this.routeName = oParameters.name;

     this.getView()。detachModelContextChange(
         this.modelCallback('edit'),
         this.getView()
     );

     如果(oParameters.name ===" EditItem"){
        如果(!isNaN(oParameters.arguments.id)){
             this.getView()。attachModelContextChange(null,
                 this.modelCallback('edit'),
                 this.getView()
             );
             sEntityPath ="/img/ItemData(" + oParameters.arguments.id +")";
             this.getView()。bindElement(sEntityPath);
         }
         其他{
             var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
             oRouter.navTo(" CreateItem",{
                 来自:" EditItem"
             },错误);
         }
     }
 },

 modelCallback:函数(类型){
     console.log(type);
 }


 

modelCallback 方法中的 console.log 正在正确启动。 用

删除行
 this.getView()。bindElement(sEntityPath); 

防止触发错误(但是这样我当然不会在视图中获取任何数据)。

有什么想法我想念什么?

下面我粘贴堆栈跟踪:

 datajs.js:17未捕获的TypeError:无法读取未定义的属性"调用"
     在f.a.fireEvent(sap-ui-core.js:449)
     在f.a.fireEvent(sap-ui-core.js:991)
     在f.fireModelContextChange(sap-ui-core.js:573)
     在f.h.setElementBindingContext(sap-ui-core.js:524)
     在builder.i(sap-ui-core.js:500)
     在builder.a.fireEvent(sap-ui-core.js:449)
     在构造函数中B._fireChange(sap-ui-core.js:1302)
     在评估时(library-preload.js:2375)
     在u(library-preload.js:2460)
     在d_r_processSuccess(library-preload.js:2492)
 

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

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


你好

在成功绑定视图的数据后,我正在尝试执行一些操作。 我认为最好的主意是在 attachModelContextChange 方法的回调中进行操作。 定义了哪种方法为回调并将事件侦听器附加到视图后,当我尝试将数据绑定到视图时,出现错误: 无法读取未定义的属性" call"。 我要在下面粘贴我的控制器代码片段和堆栈跟踪。

 onInit:function(){
     var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
     oRouter.attachRouteMatched(this.routeMatched,this);
 },


 routeMatched:函数(oEvent){
     var sEntityPath,
         oParameters = oEvent.getParameters();

     this.routeName = oParameters.name;

     this.getView()。detachModelContextChange(
         this.modelCallback('edit'),
         this.getView()
     );

     如果(oParameters.name ===" EditItem"){
        如果(!isNaN(oParameters.arguments.id)){
             this.getView()。attachModelContextChange(null,
                 this.modelCallback('edit'),
                 this.getView()
             );
             sEntityPath ="/img/ItemData(" + oParameters.arguments.id +")";
             this.getView()。bindElement(sEntityPath);
         }
         其他{
             var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
             oRouter.navTo(" CreateItem",{
                 来自:" EditItem"
             },错误);
         }
     }
 },

 modelCallback:函数(类型){
     console.log(type);
 }


 

modelCallback 方法中的 console.log 正在正确启动。 用

删除行
 this.getView()。bindElement(sEntityPath); 

防止触发错误(但是这样我当然不会在视图中获取任何数据)。

有什么想法我想念什么?

下面我粘贴堆栈跟踪:

 datajs.js:17未捕获的TypeError:无法读取未定义的属性"调用"
     在f.a.fireEvent(sap-ui-core.js:449)
     在f.a.fireEvent(sap-ui-core.js:991)
     在f.fireModelContextChange(sap-ui-core.js:573)
     在f.h.setElementBindingContext(sap-ui-core.js:524)
     在builder.i(sap-ui-core.js:500)
     在builder.a.fireEvent(sap-ui-core.js:449)
     在构造函数中B._fireChange(sap-ui-core.js:1302)
     在评估时(library-preload.js:2375)
     在u(library-preload.js:2460)
     在d_r_processSuccess(library-preload.js:2492)
 

付费偷看设置
发送
2条回答
1楼-- · 2020-09-21 19:30

尝试传递对函数的引用

 var myRef = this.modelCallback.bind(this,'edit');
 this.getView()。attachModelContextChange(null,
      myRef,
      this.getView()
 );
 

并在分离中使用相同的var引用。

此致

Jamie

哎,真难
2楼-- · 2020-09-21 19:18

这正确地附加了该方法,但是现在的问题是-如何正确分离此方法? 在此版本中,this.getView()。mEventRegistry上的console.log将返回一个增长的数组(具有键modelContextChange),因为每次将事件附加到该数组时,该数组都会无限增长。 我尝试过:

 var myRef1 = this.modelCallback.bind(this,'edit');
 this.getView()。detachModelContextChange(myRef1,this);

 var myRef2 = this.modelCallback.bind(this,'view');
 this.getView()。detachModelContextChange(myRef2,this);
 

但是它没有按预期工作(阵列仍在增长)。

一周热门 更多>