Cam*_*ues 2 coffeescript backbone.js
我正在玩CoffeeScript,我遇到了一个非常令人沮丧的错误.我有一个集合(我从ajax调用填充 - 不是fetch()- 因为我需要调整返回的JSON)
这是集合
$ ->
class AppName.Members extends Backbone.Collection
model: AppName.Member
Run Code Online (Sandbox Code Playgroud)
和模型
$ ->
class AppName.Member extends Backbone.Model
Run Code Online (Sandbox Code Playgroud)
很简单吧?最终我将构建这些以获取非填充数据,但现在就是这样.而现在我的观点
$ ->
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
@
Run Code Online (Sandbox Code Playgroud)
杀了我的是AppName.Members.add model失败了:
Uncaught TypeError: Object function Members() {
Members.__super__.constructor.apply(this, arguments);
} has no method 'add'
Run Code Online (Sandbox Code Playgroud)
但是当我期待Chrome中的元素时,构造函数add上显然有一个方法Members()!
事实上,放入手表AppName.Members.__super__.add返回功能回调!
那么这里发生了什么?为什么不是AppName.Members一个完整的Backbone系列?
add是集合上的实例方法,但您尝试将其用作类方法.您需要首先创建集合的实例:
AppName.members = new AppName.Members
Run Code Online (Sandbox Code Playgroud)
然后将模型添加到实例:
AppName.members.add model
Run Code Online (Sandbox Code Playgroud)
或者,如果您正在尝试添加模型@collection,请执行以下操作:
$.ajax
#...
success: (data, textStatus, jqXHR) =>
#...
@collection.add model
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
987 次 |
| 最近记录: |