3

Ryan Bates Backbone.js チュートリアルに従ってラッフル アプリケーションを構築しようとしていますが、コードの最初の部分で既に問題が発生しています。application.js の init 関数で、アラート「ホームページ」をトリガーするはずの Raffler ルートの新しいインスタンスを初期化しましたが、Firebug で次のようなエラーが表示されますが、これは理解できません。

entries.js:5Uncaught ReferenceError: Raffler is not defined
entry.js:15Uncaught ReferenceError: Backbone is not defined
entries.js:23Uncaught ReferenceError: Backbone is not defined
index.js:17Uncaught ReferenceError: Backbone is not defined
application.js:7Uncaught SyntaxError: Invalid regular expression: missing /
raffler.js:9Uncaught TypeError: undefined is not a function

これを修正する方法はありますか?

javascripts/raffler/application.js

window.Raffler =
  Models: {}
  Collections: {}
  Views: {}
  Routers: {}
  init: -> 
    new Raffler.Routers.Entries()
    Backbone.history.start()

$(document).ready ->
  Raffler.init()

routers/entries.js

class Raffler.Routers.Entries extends Backbone.Router
  routes:
    '': 'index'

  index: ->
    alert "home page"

アップデート

ジェネレーターを実行した//= require_tree .後、require jquery_ujs の直後に、これが問題の原因であることがわかりました (私はそう思います)。ただし、今は一番下に移動しましたが、まだこのエラーが発生しています

Raffler.Routers.Entries is not a constructor
[Break On This Error]   

new Raffler.Routers.Entries();

アプリケーション.js

    //= require jquery
    //= require jquery_ujs
    //= require underscore
    //= require backbone
    //
    //= require .//raffler
    //
    //= require_tree ../templates/
    //= require_tree .//models
    //= require_tree .//collections
    //= require_tree .//views
    //= require_tree .//routers
    //= require_tree .
4

2 に答える 2

7

私はまったく同じ問題を抱えていました。私にとっての解決策は、行を削除することでした

//= require_tree .

この行はアンダースコアとapplication.jsbackbonejs の行の前にあったためです。

于 2012-07-02T10:50:16.023 に答える
0

同じ問題を抱えている他の誰かを見つけて、それを機能させました。私は彼のコード(私のものとまったく同じ)を私のファイルにコピーしました、そして今私のものは働いています。理由がわからない

window.Raffler =
  Models: {}
  Collections: {}
  Views: {}
  Routers: {}
  init: ->
    new Raffler.Routers.Entries()
    Backbone.history.start()

$(document).ready ->
  Raffler.init()
于 2012-04-08T03:38:34.140 に答える