我的html中有以下模板
<script id="mapview-tpl" type="text/x-handlebars-template">
<div class='header'><a href='#' class="button header-button header-button-left">Back</a><h1>Map</h1></div>
<div class='details'>
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(-34.397, 150.644),
zoom: 8
};
var map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map-canvas"/>
</div>
我有一个功能,可以使用以下
将视图从主视图“转换”到此视图route: function() {
var self = this;
var hash = window.location.hash;
if (!hash) {
if (this.homePage) {
this.slidePage(this.homePage);
}else {
this.homePage = new HomeView(this.store).render();
this.slidePage(this.homePage);
}
return;
}
var match = hash.match(this.detailsURL);
if (match) {
this.store.findById(Number(match[1]), function(employee) {
self.slidePage(new EmployeeView(employee).render());
});
}
match = hash.match(this.mapsURL);
if (match) {
this.store.findById(Number(match[1]), function(employee) {
self.slidePage(new MapView(employee).render());
});
}
},
并在到达上述函数的末尾时,将引发以下错误
Uncaught TypeError: Cannot call method 'match' of undefined
嗯,有人吗?
==
我忘了补充说这个错误只在调用(this.mapsURL)时才抛出意义,它只会在
时抛出此错误match = hash.match(this.mapsURL);
if (match) {
this.store.findById(Number(match[1]), function(employee) {
self.slidePage(new MapView(employee).render());
});
}
被调用。如果它上面的工作正常
答案 0 :(得分:0)
对于这种情况,我通常使用test
,如果undefined
值(this.detailsURL).test(hash)
值(this.mapsURL).test(hash)
和hash
,则更安全。
在你的情况下,我还会检查undefined
值以了解发生了什么:它应该是“”,如果没有哈希但它甚至不是{{1}} - 否则它应该输入我猜你的第一个条件并返回。
答案 1 :(得分:0)