2013-09-30 5 views
0

Я ищу некоторые рекомендации по отладке backbone.js. Я следую учебным пособиям Daily.js и сталкивался с ошибкой после 9-й недели (http://dailyjs.com/2013/01/24/backbone-tutorial-9/).Отладка Backbone.js

Это ошибка у меня есть

 
[22:47:29.339] "calling request execute" 
[22:47:29.423] GET http://localhost:8080/img/glyphicons-halflings.png [HTTP/1.1 304 Not Modified 1ms] 
[22:47:29.424] POST https://content.googleapis.com/rpc?key=xxxxxxx [HTTP/1.1 200 OK 168ms] 
[22:47:29.546] ReferenceError: id is not defined @ http://localhost:8080/js/lib/underscore.js:1209 
[22:47:29.543] "calling options success" 

Вот код с соответствующими вызовами консоли лесозаготовительных:

 
    Backbone.gapiRequest = function(request, method, model, options) { 
    var result; 
    console.log("calling request execute") 
    request.execute(function(res) { 
     if (res.error) { 
     if (options.error) options.error(res); 
     } else if (options.success) { 
     if (res.items) { 
      result = res.items; 
     } else { 
      result = res; 
     } 
     console.log("calling options success"); 
     options.success(model, result, request); 
     } 
     console.log("gapiRequest") 
    }); 
    }; 

Чтобы вещи бросали меня в настоящее время:

  1. почему последний журнал (of gapiRequest) не отображается.
  2. Почему возникает ошибка между двумя консольными журналами, хотя ничто в коде не ссылается на id или, насколько я могу видеть, на любые внешние библиотеки.

Если кто-то знает, что может случиться, это было бы здорово, любая информация об отладке этого тоже была бы очень хороша. Можно ли отслеживать стеки в текущих веб-браузерах?

ТИА, Matt

ответ

2
  1. ваш сценарий разбился, если вы посмотрите на временные метки:

    [22:47:29.546] ReferenceError: id is not defined @ http://localhost:8080/js/lib/underscore.js:1209 
    [22:47:29.543] "calling options success" 
    

    вы увидите, что "calling options success" произошло до ReferenceError. Это означает, что ваш клиент получил результат, но ваш скрипт разбился при рендеринге шаблона (я думаю), вероятно, потому что:

  2. Судя по библиотеке, где произошло исключение (underscore.js), вы, вероятно, ссылаетесь на id где-то в своем подчеркивании шаблон. Посмотрите что-то вроде <%= id%> или <% id%> в свой файл шаблона.

+0

что кажется очевидным сейчас :-) Я проверю шаблоны спасибо. – Matt

+0

Это поставило меня прямо, поэтому я отметил это как ответ. Я не знаю подробностей о том, почему, но похоже, что модель не была заполнена. Таким образом, {{id}} действителен, просто ничего не было в нем ... половина разрешения состояла в том, чтобы вернуть изменения в вызов options.success. Тем не менее, чтобы выяснить, почему. – Matt

Смежные вопросы