Backbone.js 主干集合没有方法添加(在Coffeescript中)
我在玩CoffeeScript,遇到了一个非常令人沮丧的错误。我有一个集合(我通过ajax调用填充它——而不是Backbone.js 主干集合没有方法添加(在Coffeescript中),backbone.js,coffeescript,Backbone.js,Coffeescript,我在玩CoffeeScript,遇到了一个非常令人沮丧的错误。我有一个集合(我通过ajax调用填充它——而不是fetch()——因为我需要调整返回的JSON) 这是系列 $ -> class AppName.Members extends Backbone.Collection model: AppName.Member 和模型 $ -> class AppName.Member extends Backbone.Model 很简单,对吧?最终,我将构建这些数据以
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中的元素时,Members()
构造函数上显然有一个add
方法
事实上,在AppName.Members.\uuuuuu super\uuuuuuuuu.add中插入一个watch将返回一个函数回调
这是怎么回事?为什么AppName.Members
不是一个成熟的主干集合?是集合上的一个实例方法,但您试图将其用作类方法。您需要首先创建集合的实例:
AppName.members = new AppName.Members
然后将模型添加到实例:
AppName.members.add model
或者,如果您试图将模型添加到@collection
,请执行以下操作:
$.ajax
#...
success: (data, textStatus, jqXHR) =>
#...
@collection.add model
这是可行的(有点),但我得到了一个未定义的是未定义的错误更深的主干。我将在切换到非小型版本后进行更新,并确定如何清除我的rake资产路径:P@CamelBlues:那听起来像是无关的。你说得对,那是完全无关的。这肯定是我问题的正确答案,作为补充,我还需要确保我的模型。咖啡在集合之前就已经加载。咖啡,因为集合不知道如何制作它的模型