2015-10-27 2 views
0

В настоящее время используется пакет SDK для парсинга для веб-приложения, но я также новичок в Backbone, и поскольку эта конкретная проблема связана с функциональностью, Я не уверен, где именно я делаю свою ошибку.Parse.View.extend - «невозможно прочитать свойство« продлить »неопределенного»

У меня есть index.html с этим основным шаблоном структурой & сценария тегом (для использования на _underscore):

<div id="my-app">   

</div> 
<script type="text/template" id="album-header-template"> 
    <div id="some-id"> 
      Some Content 
    </div> 
</script> 

В конце <body>, следующие теги сценария, чтобы заботиться о PARSE зависимости нагрузки Разобрать, & использовать свой собственный JS файл:

<script src="libraries/node_modules/jquery/dist/jquery.min.js"></script> 
<script src="libraries/node_modules/underscore/underscore-min.js"></script> 
<script src="libraries/node_modules/parse/dist/parse-latest.min.js"></script> 
<script src="app/ParseApp.js"></script> 

Тогда в ParseApp.js, где я пытаюсь получить от земли путем создания простых объектов и взглядов, у меня есть Фолля из-за:

$(function() { 
    var Album = Parse.Object.extend("Album",{ 
      // Default attributes for the album 
      defaults: { 
       name: "Album Title" 
      }, 

      // Ensure that each album created has a title 
      initialize: function() { 
       if (!this.get("name")) { 
       this.set({"name": this.defaults.content}); 
       } 
      }, 
     }); 

    var HomeView = Parse.View.extend({ 
     el: $("#my-app"), 

     initialize: function() { 
      console.log("new instance of HomeView"); 
      this.render(); 
     }, 

     render: function() { 
      this.$el.html(_.template($("#album-header-template").html())); 
     } 
    }); 

    new HomeView; 
}); 

Когда я бегу index.html в браузере, я получаю следующее сообщение об ошибке в консоли: Uncaught TypeError: Cannot read property 'extend' of undefined (встречающийся в var Home View = Parse.View.extend линии).

Первоначально я думал, что это может быть потому, что Parse не был инициирован вовремя для использования ParseApp.js, основываясь на загрузке моих скриптов. Тем не менее, я использовал рекомендованный "Test the SDK" script из Parse, и он действительно инициализирован (кроме того, добавление объекта с var Album отлично работает). Поэтому я действительно зациклился на том, что вызывает HomeView или Parse.View, чтобы быть «неопределенным».

Вероятно, прямой ответ, который я пропускаю, но любая помощь будет принята с благодарностью, и я мог бы предоставить полные файлы, если потребуется.

+1

'Невозможно прочитать свойство 'extend' of undefined' - по сути, он говорит, что' Parse.View' - это не вещь. Вы можете отправить его на консоль, чтобы проверить, есть ли это. – Yura

+0

Спасибо, это отличное резюме. И я просто запустил 'Parse.View' в консоли и получил' undefined'. Теперь мне нужно выяснить, почему работают только некоторые методы Parse - 'Parse.Collection' и' Parse.Router' (оба из которых работают в [примере приложения Todo] (https://github.com/ParsePlatform/ Todo) Я ссылаюсь), но 'Parse.Object' и' Parse.User' возвращают свои правильные функции. Хотелось бы услышать мысли о том, что может вызвать только частичную функциональность с Parse SDK. –

+0

EDIT: 'Parse.Collection',' Parse.Router' и 'Parse.View' все ** не работают ** прямо сейчас и возвращают' undefined' –

ответ

3

Не очень удовлетворительный ответ, но благодаря помощи @Yura & @ Daniel Blank, обнаружил, что ошибка возникла из-за того, что последние версии Parse SDK (все после 1.6.0) больше не включают полную функциональность Backbone. Это включает версию, которую я использовал локально из числа npm.

Лучшее объяснение направления Анализировать SDK находится в ссылке, приведенной выше, и, как представляется, три варианта, для тех, кто надеется продолжить использование синтаксического анализа и/или Backbone:

  1. Используйте старую версию (1.5.0 является самым последним, который включает функциональные возможности Backbone), чтобы поддерживать функции вашей базовой линии, такие как Parse.Collection или Parse.Router.
  2. Попробуйте выполнить анализ SDK-агностик, продолжая использовать Магистраль. Можно использовать базовый API-интерфейс Parse REST или попробовать один из the GitHub projects, пытающийся сделать это для вас.
  3. Откажитесь Backbone идти вперед и использовать Разбор с VanillaJS, или, возможно, switch over to React (который, очевидно, направление Facebook хотел бы Анализировать голова)

Я слишком неопытен, чтобы рекомендовать один из трех, хотя # 1 кажется самым легким, в то время как # 3 кажется далеким и наиболее удобным. Все еще пытаюсь принять мое собственное решение, но это выходит за рамки моего первоначального вопроса. Спасибо всем за помощь.

+0

Низкая репутация = ограниченные ссылки, но вот [ссылка для объяснения] (http://stackoverflow.com/questions/32722575/how-do-implement-the-backbone-model-in-latest-parse-js-sdk -1-6-2) Я упомянул –

0

2 вещи выскочить на меня:

  1. Я не вижу, где вы инициализации ... Разбор обычно что производит различные ошибки, но все еще может быть проблема
  2. Вы ссылаетесь ваш собственная локальная библиотека для Parse ... возможно, попытайтесь настроить таргетинг на официально развернутую версию.

сценарий SRC = "http://www.parsecdn.com/js/parse-1.2.13.min.js"

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