AngularJS错误:TypeError:无法读取未定义的属性'toString'

时间:2016-06-14 17:51:12

标签: angularjs undefined

我正在处理一个涉及AngularJS的项目,我遇到了一个似乎无法解决的错误。毋庸置疑,我是一个新手,希望你们能帮助我解决这个问题,因为我已经在这个问题上花了很长时间。

这是我的代码

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

这就是发生错误的地方

FleetMapCtrl.js

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

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

<head>

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

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

2 个答案:

答案 0 :(得分:0)

您没有在您的小方法中检查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的位置并找出手表未返回新值的原因。

答案 1 :(得分:0)

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