模板抛出 - 未捕获的TypeError:无法调用undefined的方法'match'

时间:2013-12-02 10:47:55

标签: javascript jquery html templates

我的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());
        });
    }

被调用。如果它上面的工作正常

2 个答案:

答案 0 :(得分:0)

对于这种情况,我通常使用test,如果undefined(this.detailsURL).test(hash)(this.mapsURL).test(hash)hash,则更安全。

在你的情况下,我还会检查undefined值以了解发生了什么:它应该是“”,如果没有哈希但它甚至不是{{1}} - 否则它应该输入我猜你的第一个条件并返回。

答案 1 :(得分:0)

傻我!发现这可能是一个无法编译的模板的“通用”错误,在我的情况下,模板名称被错误地定义了!感谢