Метание шаблона - Uncaught TypeError: Невозможно вызвать метод 'match' из неопределенного

0

У меня есть следующий шаблон в моем 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 удается Uncaught TypeError: Cannot call method 'match' of undefined hmm who?

======

добавленной

Я забыл добавить, что эта ошибка возникает только тогда, когда значение (this.mapsURL) называется значением, оно будет вызывать эту ошибку только тогда, когда

match = hash.match(this.mapsURL);
    if (match) {

        this.store.findById(Number(match[1]), function(employee) {
            self.slidePage(new MapView(employee).render());
        });
    }

называется. Если выше это работает просто отлично

  • 0
    hash , вероятно, не определен. И нет никакой функции match из undefined . Добавить hash = hash === undefined ? "" : hash
Теги:
templates

2 ответа

0

Дурак я!!! выяснили, что это может быть "общая" ошибка из шаблона, который невозможно скомпилировать, и в моем случае имя шаблона было неправильно определено! благодаря

0

Для таких сценариев я обычно использую test который безопаснее в случае undefined значений: (this.detailsURL).test(hash) и (this.mapsURL).test(hash).

В вашем случае я все равно также проверил бы значение hash чтобы понять, что происходит: он должен быть "" в случае отсутствия хэша, но он даже не undefined иначе он должен ввести ваше первое условие и вернуться, я думаю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню