为什么使用CoffeeScript类继承时主干模型不能正常工作
Why dont Backbone models work correctly when using CoffeeScript class inheritance
我看过几篇关于如何在Backbone中使用CoffeeScript的扩展功能的文章,但我无法让它发挥作用。以下代码:
Backbone = require 'Backbone'
# The backbone way
Base = Backbone.Model.extend (
initialize: ->
)
Model = Base.extend (
initialize: ->
console.log 'initialize called'
@on 'change:foo', ->
console.log 'foo changed (Base)'
defaults: (
foo: 'bar'
)
)
model = new Model()
model.set 'foo', 'baz'
console.log model.get 'foo'
# The coffeescript way with double ineritance
class Base2 extends Backbone.Model
constructor: ->
class Model2 extends Base2
constructor: ->
console.log 'constructor called (Base2)'
@on 'change:foo', ->
console.log 'foo changed (Base2)'
defaults: (
foo: 'bar'
)
model2 = new Model2 (foo: 'bar')
model2.set 'foo', 'baz2'
console.log model2.get 'foo'
投掷:
% coffee index.coffee
initialize called
foo changed (Base)
baz
constructor called (Base2)
TypeError: Cannot read property 'foo' of undefined
at Model2._.extend.set
你也可以在这里玩http://codepen.io/guyht/pen/LEOdZr?editors=001
您的问题是通过指定自己的constructor
来替换Backbone的构造函数。Backbone需要使用自己的构造函数来设置所有的Backbone内部,类似构造函数的代码应该在initialize
中,就像使用Backbone的extend
函数而不是CoffeeScript的extends
关键字时一样:
class Base2 extends Backbone.Model
initialize: ->
class Model2 extends Base2
initialize: ->
console.log 'initialize called (Base2)'
@on 'change:foo', ->
console.log 'foo changed (Base2)'
defaults: (
foo: 'bar'
)
更新的演示:http://codepen.io/anon/pen/myqxWY
相关文章:
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JS可以在Chrome中工作,但不能在Firefox中工作
- javascript扫雷器floodfill算法不能正常工作
- JavaScript指令不能像我想象的那样工作
- Facebook登录按钮没有'不能在Firefox上工作
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- javascript没有´我不能在joomla 3.0中工作
- 用javascript将script元素附加到头部;铬不能工作
- jQuery函数不能只在一个页面上工作
- 为什么这个代码不能正常工作
- 为什么jquery悬停在jsfiddle中可以工作,而在我的html布局中却不能
- 为什么我的JavaScript在Safari上的严格模式下不能正常工作
- 为什么Turbolinks不能正常工作?Rails应用程序
- jQuery dosn'内联函数不能按预期工作
- 为什么这个javascript工作不能正确地分配.cells[] ?
- 谷歌应用引擎云端点:OAuth2不工作.不能加载api
- 输入焦点不工作/不能选择单选按钮-引导
- LocalStorage不能在iPhone上工作-不能在私人浏览
- 工作不能代替生活