javascript - 方法未在 backbone.js + coffeescript 上定义

标签 javascript jquery backbone.js coffeescript

我在 backbone.js 中使用了 coffeescript 而不是 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 时忘记 :

关于javascript - 方法未在 backbone.js + coffeescript 上定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14661753/

相关文章:

javascript - 如何强制浏览器在长进程中间刷新 View

javascript - 通过单击框外部关闭模式

javascript - 为什么我需要加载jquery两次

javascript - 主干 View 未监听模型更改

javascript - 事件方向更改在主干中不起作用

javascript - 对于 ajax 响应,die 或 echo 哪个更好?

javascript - 你如何使用 Node 将分块视频上传到推特

JavaScript String.replace : how to know that callback function is invoked for last time?

jquery - 单击窗口外的叠加层时如何关闭 KendoUI 模式窗口?

取决于 phpvariable 的 JavaScript 代码