我正在使用 CoffeeScript 并且遇到了一个非常令人沮丧的错误。我有一个集合(我是从 ajax 调用填充的——不是fetch()
——因为我需要调整返回的 JSON)
这是收藏
$ ->
class AppName.Members extends Backbone.Collection
model: AppName.Member
和模型
$ ->
class AppName.Member extends Backbone.Model
很简单,对吧?最终,我将构建这些以获取非填充数据,但目前情况就是这样。现在在我看来
$ ->
class AppName.TitleView extends Backbone.View
template: JST['templates/title']
initialize: ->
@bind(@collection, 'add', @addOne);
@bind(@collection, 'reset', @addAll);
@bind(@collection, 'all', @render);
$.ajax
dataType: 'json'
url: '/housemembers'
success: (data, textStatus, jqXHR) ->
for member in data.results[0].members
model =
state : member.state
first_name : member.first_name
middle_name : member.middle_name
last_name : member.last_name
next_election : member.next_election
party : member.party
AppName.Members.add model
@
让我丧命的是AppName.Members.add model
失败了:
Uncaught TypeError: Object function Members() {
Members.__super__.constructor.apply(this, arguments);
} has no method 'add'
但是当我期望Chrome中的元素时,构造函数上显然有一个add
方法Members()
!!!
事实上,加入 watch for 会AppName.Members.__super__.add
返回一个函数回调!
那么这里发生了什么?为什么不是AppName.Members
成熟的 Backbone 集合?