Načítání jednoduchý seznam položek

hlasů
0

To by mělo být velmi základní otázka o backbone.js, jsem úplný začátečník v JavaScript / backbone.js, četl jsem několik výukových programů, ale nemám podaří udělat docela jednoduchý úkol: „načítání seznam záznamů z bodu A databáze.

Celá aplikace je na Google App Engine. Databáze již obsahuje několik záznamů „slova“, a použil jsem baňky poslat JSON reprezentace položky.

Zde je funkce jsem použil pro tento úkol:

@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

Takže, pokud jsem pochopit, jak bude program pracovat, moje páteř aplikace bude v kořenovém adresáři na webových stránkách, že pošle na adresu „/ slova“ získat některé údaje z databáze v určitém formátu tzv JSON, takže aplikace může použít volně.

Předpokládám, že URL http://localhost:8080/wordsje správné, protože výstup je následující:

[{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: }...]

U kořene stránkách, mám prázdnou stránku (chci začít s velmi jednoduchými úkoly první), s jednoduchým javascript souboru (spolu s závislostí, json2, jQuery, podtržení a páteře).

Jsem začátečník v JavaScriptu, takže jsem použil Coffeescript protože syntaxe je poměrně podobné tomu, co jsem vlastně vědět pythonu, tak jsem si myslel zaučení bude méně strmá. Tady je moje káva soubor takto:

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

Shrneme-li to, co jsem zde napsal, jsem vytvořil model s názvem Word a sbírku, která obsahuje všechna slova. Tato sbírka by měla načíst všechna data ze serveru pomocí URL JSON. Každé slovo může být vyjádřen se svým vlastním specifickým cílem (WordView), v odstavci s. V zobrazení aplikace (WordListView), jsem prostě váží doplněk akci na funkci addOne, stejně jako obnovovací akce na funkci addAll. A já se snažím, aby přinesla všechna slova v tomto okamžiku. Funkce addOne vytvoří nový pohled na odpovídající slova a připojí k tělu nový odstavec, který by měl obsahovat slovo. Pokaždé, nové slovo je přidán, vazba spouští funkci addOne, čímž každé slovo.

Nevím, jestli mám správnou cestu k přemýšlení.

Položena 23/07/2011 v 14:12
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Mám-li správně pochopit vaši otázku, že se snažíte pochopit, proč Wordsnení naplněna při spuštění Words.fetch(). Mám několik otázek pro vás:

  1. Jaká je hodnota WordList.url? Mělo by být "/words"pro váš příklad.
  2. Způsob načtení přijímá successa errorzpětná volání ...

To znamená, že můžete ladit takto (za předpokladu, že váš prohlížeč má vývojářské konzoli):

Words.fetch
  success: (collection, response) -> console.log "success: #{response}"
  failure: (collection, response) -> console.log "failure: #{response}"

Když to uděláte, co vidíte v konzoli?

Odpovězeno 23/07/2011 v 15:59
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more