我正在尝试获得一个CoffeeScript类来扩展Backbone.Model。我构建了一个全新的rails 3.1应用程序,创建了一个具有3个属性的"Stone"脚手架,并将Todos.coffee示例的一个片段修补到stones.js.coffee中。我在app/assets/javascripts文件夹中有Backbone.js和undercore.js。当我在Chrome Java控制台下运行此操作时,我会在控制台日志中收到上面的消息。有什么想法吗?
实际代码如下:
$ ->
class Todo extends Backbone.Model
# Default attributes for the todo.
defaults:
content: "empty todo..."
done: false
# Ensure that each todo created has `content`.
initialize: ->
if !@get("content")
@set({ "content": @defaults.content })
# Toggle the `done` state of this todo item.
toggle: ->
@save({ done: !@get("done") })
# Remove this Todo from *localStorage* and delete its view.
clear: ->
@destroy()
@view.remove()
所使用的application.js是由Rails 3.1生成的。我从Todos github repo中复制了backbone.js和undercore.js,https://github.com/JasonGiedymin/backbone-todojs-coffeescript
问题很简单,underscore.js
是在backbone.js
之后加载的,而它是必须在之前加载的先决条件。(请注意,在Backbone.js源代码中,它会立即设置var _ = root._
,因此即使稍后声明全局_
,它在Backbone的作用域中也不可见。)默认情况下,Sprockets会按字母顺序加载assets目录中的js文件。
你可以使用Sprockets解决这个问题:放置
//= require underscore.js
之前
//= require_tree .
以确保先加载。