【问题标题】:AngularJS error : TypeError: Cannot read property 'toString' of undefinedAngularJS 错误:TypeError:无法读取未定义的属性“toString”
【发布时间】:2016-06-14 17:51:12
【问题描述】:

我正在从事一个涉及 AngularJS 的项目,但我遇到了一个似乎无法弄清楚的错误。不用说,我是这方面的新手,希望你们能帮助我解决这个问题,因为我在这个问题上花了很长时间。

这是我的代码

WatchboxCtrl.js https://gist.github.com/anonymous/0c68fbd87574d61377b54981a09f66e5

这就是错误发生的地方

FleetMapCtrl.js

https://gist.github.com/anonymous/9df7bc7c54a09c91dd60cd009ba9ff91

最终,我想要做的是,让应用程序显示多个警报,如果我单击其中一个警报,应用程序应自动放大警报发出的单元。以前,我将“id”作为字符串,它工作正常;但是,后来我将“id”更改为整数,缩放功能不再起作用。每次我点击警报时,控制台都会给我这个错误:

angular.js:11655 TypeError: Cannot read property 'toString' of undefined at flyTo (FleetMapCtrl.js:320) at Object.fn (FleetMapCtrl.js:287) at Scope.$digest (angular.js:14308) at Scope.$apply (angular.js:14571) at HTMLButtonElement.<anonymous> (angular.js:21571) at HTMLButtonElement.dispatch (jquery-2.0.3.min.js:5) at HTMLButtonElement.y.handle (jquery-2.0.3.min.js:5)

它在fleetmapCtrl.js 的第320 行显示错误,但我无法弄清楚/理解它为什么不起作用。

请帮忙。我到处搜索以修复它,但我似乎无法解决它。我很绝望。谢谢

【问题讨论】:

    标签: angularjs undefined


    【解决方案1】:

    正如你所说,newval 不再是一个字符串,newVal 中也没有缩放级别。 当您访问 newVal.zoomLevel 时,它只会给出 undefined 。 我认为下面的行有问题。我无法看到您将 zoomLevel 分配给该对象的任何地方。如果我错过了同样的事情,请原谅我。 $scope.markers = getMarkers($scope.mapData[newVal.zoomLevel.toString()]);

    【讨论】:

      【解决方案2】:

      你没有在你的小方法中检查undefined

      function isUndefinedOrNull(val) {
          if (val === "" || val === null || val === "undefined") {
              return true;
          }
      }
      

      您正在检查字符串 "undefined" 而不是 undefined

      console.log(undefined==="undefined");  //false
      

      所以它应该没有引号

      function isUndefinedOrNull(val) {
          return val === "" || val === null || val === undefined;
      }
      

      现在为什么它是未定义的?您需要跟踪调用 flyTo 的位置并找出手表未返回新值的原因。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-26
        • 2016-09-12
        相关资源
        最近更新 更多