2015-05-28 39 views
0

best practice guide我得到一个错误“遗漏的类型错误:未定义是不是一个函数”。attachEventOnce()导致“未定义是不是一个函数”

通过大量的在下面的代码行,我发现这个错误被抛出console.logs(匿名在控制台)的:

oView.getElementBinding().attachEventOnce(....) 

AttachEventOnce()是导致问题的功能。你有一个想法如何解决这个问题或进一步调试?

的代码块:

 oView.getElementBinding().attachEventOnce("dataReceived", jQuery.proxy(function() { 

      var oData = oView.getModel().getData(sReportPath); 
      if (!oData) { 
       sap.ui.core.UIComponent.getRouterFor(this).myNavToWithoutHash({ 
        currentView : oView, 
        targetViewName : "namespace.view.NotFound", 
        targetViewType : "XML" 
       }); 
      } 
     }, this)); 

从最佳实践指南引用:

  // Check that the product specified actually was found 
      oView.getElementBinding().attachEventOnce("dataReceived", jQuery.proxy(function() { 
       var oData = oView.getModel().getData(sProductPath); 
       if (!oData) { 
        sap.ui.core.UIComponent.getRouterFor(this).myNavToWithoutHash({ 
         currentView : oView, 
         targetViewName : "sap.ui.demo.tdg.view.NotFound", 
         targetViewType : "XML" 
        }); 
       } 
      }, this)); 

这整个事情是 “routeMatched” 一节中被解雇。

+0

之前会发生什么?在最佳实践指南中的这个呼叫之前有一些行。您是否尝试过Chrome的功能来停止异常? – matbtt

+0

@matbtt我想我找到了错误。这是OData后端的一个问题。我没有实现“readEntity”......啊,不需要检查我的答案; P – OddDev

回答

0

作为无休止地提到了它“延迟”(〜环)的特定实体的绑定上下文。

然而,摆在首位的绑定使用以下方法:

  • 一切绑定到控制
  • 使用的第一个项目(不管它是什么)保税区列表

但只要一个点击不同的控制,从而将触发提到代码行中,结合想要改变到特定实体(HTTP:// odataservice /实体(“WithASpecificKey”))。

的事情是,如果你没有在你的OData服务实施了“readEntity”的方法,你也会有这样的错误。这看起来很乍看起来很奇怪,因为它在最初的方法上工作,而不是在点击之后。这就是为什么它有线/有线调试。

我做什么正确地实现在OData服务的“readEntity”的方法。

-2

attachEventOnce()似乎并不是JavaScript的标准部分(您可以通过打开JS控制台并选择页面上的任意元素并运行object.attachEventOnce() === undefined;来验证此问题。)我敢打赌,本标准指南定义了它在文中早些时候。它也似乎one()可能是你想要的功能。

+0

函数attachEventOnce在SAPUI5/OpenUI5 EventProvider对象中定义。由于绑定扩展了这个对象,该功能应该可用。 – matbtt

相关问题