回调函数无法调用函数

2020-09-16 13:16发布

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

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


专家们,

我是sapUI5空间的新手,我想做的是调用" sap.ndc.BarcodeScanner.scan"函数来扫描这样的条形码:

 onPress:function(oEvent){
 sap.ndc.BarcodeScanner.scan(
 函数(mResult){

 this.NavResult(mResult);
 },
 函数(错误){

 },
 函数(mParams){

 }
 );
 },

 NavResult:function(mResult){
 var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
 oRouter.navTo(" ResultView",{barcode:" barcode"});

 }
 

我的要求是,一旦成功读取条形码,便移至下一个视图。 但是上述调用方法" NavResult(mResult)"在回调函数中未被识别,似乎是范围问题。

我收到以下错误:

未捕获的TypeError:this.NavResult不是函数
     at Object.eval [as onSuccess](ScanView.controller.js?eval:50)
     在Object.onOK(BarcodeScanner.js?eval:6)
     在f.a.fireEvent(EventProvider-dbg.js:228)
     在f.a.fireEvent(Element-dbg.js:431)
     在f.firePress(ManagedObjectMetadata-dbg.js:568)
     在f.d.ontap(Button-dbg.js:289)
     在f_a_handleEvent(Element-dbg.js:162)
     在builder.U._handleEvent(UIArea-dbg.js:828)上
     在HTMLDivElement.dispatch(jquery-dbg.js:4737)
     在g(jquery-mobile-custom-dbg.js:1972)
 


如何更改此功能的范围以使其起作用。 非常感谢您的帮助。

致谢

Rakesh



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

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


专家们,

我是sapUI5空间的新手,我想做的是调用" sap.ndc.BarcodeScanner.scan"函数来扫描这样的条形码:

 onPress:function(oEvent){
 sap.ndc.BarcodeScanner.scan(
 函数(mResult){

 this.NavResult(mResult);
 },
 函数(错误){

 },
 函数(mParams){

 }
 );
 },

 NavResult:function(mResult){
 var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
 oRouter.navTo(" ResultView",{barcode:" barcode"});

 }
 

我的要求是,一旦成功读取条形码,便移至下一个视图。 但是上述调用方法" NavResult(mResult)"在回调函数中未被识别,似乎是范围问题。

我收到以下错误:

未捕获的TypeError:this.NavResult不是函数
     at Object.eval [as onSuccess](ScanView.controller.js?eval:50)
     在Object.onOK(BarcodeScanner.js?eval:6)
     在f.a.fireEvent(EventProvider-dbg.js:228)
     在f.a.fireEvent(Element-dbg.js:431)
     在f.firePress(ManagedObjectMetadata-dbg.js:568)
     在f.d.ontap(Button-dbg.js:289)
     在f_a_handleEvent(Element-dbg.js:162)
     在builder.U._handleEvent(UIArea-dbg.js:828)上
     在HTMLDivElement.dispatch(jquery-dbg.js:4737)
     在g(jquery-mobile-custom-dbg.js:1972)
 


如何更改此功能的范围以使其起作用。 非常感谢您的帮助。

致谢

Rakesh



付费偷看设置
发送
4条回答
xfwsx85
1楼 · 2020-09-16 14:19.采纳回答

对不起,我想我把它放错了位置,

 onPress:function(oEvent){
      sap.ndc.BarcodeScanner.scan(
           函数(mResult){
               this.NavResult(mResult);
           } .bind(this),

           函数(错误){},

           函数(mParams){}
      );

 },
悠然的二货
2楼-- · 2020-09-16 14:17

是的,在JavaScript中,每个函数都包含一个属性this,在javascript中,this的值不固定,取决于函数的调用方式。 您可以在上方将回调函数传递给条形码对象,并在扫描完成时稍后由条形码调用。 此值是这里永远不会成为控制器的调用对象的值。

要更改此设置,我们可以使用bind()函数将此值设置为控制器。

哎,真难
3楼-- · 2020-09-16 14:18
 onPress:function(oEvent){
 sap.ndc.BarcodeScanner.scan(
 函数(mResult){
                               this.NavResult(mResult);
 },
 函数(错误){

 },
 函数(mParams){

 }
 ).bind(this);
 },

 NavResult:function(mResult){
 var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
 oRouter.navTo(" ResultView",{barcode:" barcode"});

 } 

您能否尝试将此值绑定到上面的函数

SKY徐
4楼-- · 2020-09-16 14:08

嗨,布莱恩,

当我单击扫描时,像这样的绑定会导致其他错误:

 ScanView.controller.js?eval:64未捕获的TypeError:无法读取未定义的属性" bind"
     在f.onPress(ScanView.controller.js?eval:64)
     在f.a.fireEvent(EventProvider-dbg.js:228)
     在f.a.fireEvent(Element-dbg.js:431)
     在f.firePress(ManagedObjectMetadata-dbg.js:568)
     在f.d.ontap(Button-dbg.js:289)
     在f_a_handleEvent(Element-dbg.js:162)
     在builder.U._handleEvent(UIArea-dbg.js:828)上
     在HTMLBodyElement.dispatch(jquery-dbg.js:4737)
     在g(jquery-mobile-custom-dbg.js:1972)
     在HTMLBodyElement.q(jquery-mobile-custom-dbg.js:2072)
 

它不醒。

一周热门 更多>