Это должен быть очень простой вопрос о backbone.js, я полный новичок в javascript / backbone.js, я прочитал несколько уроков, но мне не удается выполнить довольно простую задачу: «получить списокЗаписи из базы данных ".
Все приложения в Google App Engine.База данных уже содержит несколько записей «слов», и я использовал Flask для отправки JSON представлений записей.
Вот функция, которую я использовал для этой задачи:
@wordbook.route('/words', methods=('GET', 'POST'))
def wordlist():
return retrieve_words()
def retrieve_words():
content = json.dumps([word.to_dict() for word in Word.all()])
response = make_response(content)
response.mimetype = 'application/json'
return response
Итак, какНасколько я понимаю, как будет работать программа, мое базовое приложение будет находиться в корне сайта, он попросит URL «/ words» получить данные из базы данных в определенном формате, называемом JSON, чтобыПриложение может использовать его свободно.
Я предполагаю, что URL http://localhost:8080/words
правильный, так как вывод следующий:
[{"word": "keyboard", "key": "ahB2b2NhYnVsYXJpdW0tYXBwcgoLEgRXb3JkGAEM", "language": "en", "nature": "noun", "usage": "Plural keyboards", "gender": ""}, {"word": "keyboard", "key": "ahB2b2NhYnVsYXJpdW0tYXBwcgoLEgRXb3JkGBoM", "language": "en", "nature": "verb", "usage": "Regular verb", "gender": ""}, {"word": " mouse", "key": "ahB2b2NhYnVsYXJpdW0tYXBwcgoLEgRXb3JkGB4M", "language": "en", "nature": "noun", "usage": "Plural mousemice", "gender": ""}, {"word": " mouse", "key": "ahB2b2NhYnVsYXJpdW0tYXBwcgoLEgRXb3JkGDIM", "language": "en", "nature": "verb", "usage": "Regular verb", "gender": ""}, {"word": " hard", "key": "ahB2b2NhYnVsYXJpdW0tYXBwcgoLEgRXb3JkGDoM", "language": "en", "nature": "adj", "usage": "Comparative harder, superlative hardest", "gender": ""}...]
В корне сайта у меня есть пустая веб-страница(Сначала я хочу начать с очень простых задач), с простого файла javascript (вместе с зависимостями, json2, jQuery, underscore и backbone).
Я новичок в javascript, поэтому я использовал Coffeescriptпотому что синтаксис относительно похож на то, что я на самом деле знаю в Python, поэтому я думал, что кривая обучения будет менее крутой.Вот мой файл кофе таким образом:
class Word extends Backbone.Model
class WordList extends Backbone.Collection
model: Word
url: 'words'
Words = new WordList
class WordView extends Backbone.View
tagName: 'p'
render: ->
word = @model.get 'word'
$(@el).html word
@
class WordListView extends Backbone.View
el: $ 'body'
initialize: ->
_.bindAll @, 'addOne', 'addAll'
Words.bind 'add', @addOne
Words.bind 'refresh', @addAll
Words.fetch()
addOne: (word) ->
view = new WordView model: word
@.$ 'body'.append view.render().el
addAll: ->
Words.each @addOne
-> WordList = new WordListView
Подводя итог тому, что я здесь написал, я создал модель под названием Word и коллекцию, которая содержит все слова.Эта коллекция должна получать все данные с сервера, используя URL-адрес JSON.Каждое слово может быть отображено с их собственным определенным представлением (WordView) в параграфе p.В представлении приложения (WordListView) я просто связываю действие добавления с функцией addOne, а также действие обновления с функцией addAll.И я пытаюсь получить все слова в это время.Функция addOne создает новый вид соответствующего слова и добавляет к телу новый абзац, который должен содержать слово.Каждый раз, когда добавляется новое слово, привязка запускает функцию addOne, отрисовывая каждое слово.
Я не знаю, правильно ли я понял.