Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干集合没有方法添加(在Coffeescript中)_Backbone.js_Coffeescript - Fatal编程技术网

Backbone.js 主干集合没有方法添加(在Coffeescript中)

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 很简单,对吧?最终,我将构建这些数据以

我在玩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中的元素时,
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:那听起来像是无关的。你说得对,那是完全无关的。这肯定是我问题的正确答案,作为补充,我还需要确保我的模型。咖啡在集合之前就已经加载。咖啡,因为集合不知道如何制作它的模型