【问题标题】:isolating an angularjs anonymous $parser:ueoe error隔离 angularjs 匿名 $parser:ueoe 错误
【发布时间】:2020-06-01 19:43:02
【问题描述】:

花时间找出这个错误的来源。

在一个按钮上,我有ng-click="goUrl('L_1001_1008_1113')"

在控制器(ClubCtrl)中是:

$scope.goUrl = function(id) {
   console.log("HereA - "+id) ;
   $location.url('/tab/clubs/'+id) ;
   console.log("HereB - "+id) ;
}

当我单击按钮时,我在控制台中收到此错误:

这里A - L_1001_1008_1113

这里B - L_1001_1008_1113

ionic.bundle.js:20306 错误:[$parse:ueoe] 意外结束 表达:俱乐部。 http://errors.angularjs.org/1.3.13/$parse/ueoe?p0=club.

at ionic.bundle.js:8762
at Parser.consume (ionic.bundle.js:20747)
at Parser.identifier (ionic.bundle.js:20778)
at Parser.fieldAccess (ionic.bundle.js:20975)
at Parser.primary (ionic.bundle.js:20701)
at Parser.unary (ionic.bundle.js:20970)
at Parser.multiplicative (ionic.bundle.js:20953)
at Parser.additive (ionic.bundle.js:20944)
at Parser.relational (ionic.bundle.js:20935)
at Parser.equality (ionic.bundle.js:20926)

我只使用了一个地方 club - 它在 detail-club.html 模板页面和该页面控制器 (ClubDetailCtrl) 中。我的状态改变者是:

  .state('tab.clubs', {
      cache: true,
      url: '/clubs',
      params: {
        'refreshClubs' : 0,
        'pushAction' : 0,
        'pushSub' : null,
        'pushMsg' : null,
        'pushCode' : null
      },
      views: {
        'tab-clubs': {
          templateUrl: 'templates/tab-clubs.html',
          controller: 'ClubCtrl'

        }
      }
    })
    .state('tab.club-detail', {
      url: '/clubs/:ceID',
      views: {
        'tab-clubs': {
          templateUrl: 'templates/detail-clubs.html',
          controller: 'ClubDetailCtrl'
        }
      }
    })

目前,我已经注释掉了 ClubDetailCtrl rxcept 中的所有内容 console.log("HereC"); 试图隔离错误。但是“HereC”永远不会在控制台中触发。所以我知道ClubDetailCtrl 没有发生这个问题。

错误消息很糟糕,并没有指出实际触发它的原因。这个错误是什么,更重要的是如何追踪它?

错误是否来自包含按钮的模板页面?或者它可能来自按钮试图重定向到的模板页面?重定向页面/控制器是唯一只有club 的东西,但我想控制器控制台消息HereC 会在模板页面导致错误之前触发。那么它还能在哪里呢?

【问题讨论】:

    标签: javascript angularjs ionic-framework angular-ui-router


    【解决方案1】:

    出于调试目的,为状态创建一个简化的模板和控制器:

    .state('tab.club-detail', {
      url: '/clubs/:ceID',
      views: {
        'tab-clubs': {
          template: `<div>DETAIL-CLUBS</div>`,
          controller: function() {
              console.log("details controller init");
          }
        }
      }
    })
    

    【讨论】:

    • 我终于找到了。贴在下面。虽然匿名错误让我查看了源 ng-click、.state 和源模板控制器 - 不在要加载的模板页面中。
    【解决方案2】:

    好吧,2天后我终于找到了错误。发布此内容以防其他人发现自己遇到类似情况。

    我已将新的 HTML 添加到上述链接/网址正在加载的模板页面。新的 HTML 代码应该通过引用 {{club.}} 打印出可读的描述 - 显然我没有添加所有代码,它应该是 {{club.ceDesc}} - 这导致错误被抛出,没有页面加载,没有其他迹象表明这是错误的来源。似乎错误是在上一页的 ng-click 或 .state. url 调用中引发的。

    【讨论】:

    • 看起来错误信息是正确的。表达式的意外结束:club. AngularJS 解析器不喜欢表达式末尾的点。 JavaScript 解析器也不喜欢它。
    • 我不反对......但试图找到它的来源是一场噩梦。希望 Angulars 解析错误信息更具体。
    猜你喜欢
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多