我在中立的javascript中使用coffeescript代替javascript的javascript:
TodoItem = Backbone.Model.extend(
toggleStatus ->
if @.get 'status' is "incomplete"
@.set 'status': 'complete'
else
@.set 'status': 'incomplete'
@.save()
)
todoItem = new TodoItem(
description: 'Play the guitar'
status: 'incomplete'
id: 1
)
TodoView = Backbone.View.extend(
tagName: 'div'
id: "box"
className: 'red-box'
template:
_.template "<h3> <input type=checkbox #{ print "checked" if status is "complete"} /> <%= description %></h3>"
events:
"click h3": "alertStatus"
'change input': 'toggleStatus'
toggleStatus: ->
@.model.toggleStatus()
alertStatus: ->
alert('Hey you clicked the h3!')
render: ->
@.$el.html @.template(@.model.toJSON())
)
todoView = new TodoView({model: todoItem})
todoView.render()
console.log todoView.el
Backbone版本是最新版本0.9.10,underscore.js版本是最新版本1.4.4
coffeescript文件可以很好地编译,但是我进入控制台:
未捕获的ReferenceError:未定义toggleStatus main.js:5
(匿名函数)main.js:5
(匿名功能)
谢谢!
最佳答案
我想您正在尝试在第2行的键toggleStatus
上为对象分配一个匿名函数。
然后,在声明:
时只需忘记toggleStatus
。