我创建了一个我想要扩展的单例类.它(一半)的工作原理是它只创建一个类的实例,但是添加到子类的属性是未定义的.这是最初的单身人士:
class Singleton
_instance = undefined
@getInstance: ->
if _instance is undefined
console.log 'no instance exists, so create one'
_instance = new _Singleton()
else
console.log 'an instance already exists.'
class _Singleton
constructor: ->
console.log 'new singelton'
module.exports = Singleton
Run Code Online (Sandbox Code Playgroud)
这是子类:
Singleton = require('./singleton')
class Stinky extends Singleton
constructor: ->
var1 : 'var1'
module.exports = Stinky
Run Code Online (Sandbox Code Playgroud)
现在,如果我在节点应用程序中使用以下内容:
Stinky = require './stinky'
thing1 = Stinky.getInstance()
thing2 = Stinky.getInstance()
console.log "Thing var1: #{thing1.var1}"
Run Code Online (Sandbox Code Playgroud)
getInstance()方法按预期运行,但var1未定义.如果我在非单件类上做同样的事情,他们工作正常.谢谢.
我正在创建一个非常简单的骨干应用程序来熟悉框架.除了将模型更改事件绑定到我视图中的函数之外,所有工作都正常.我已经检查了以前关于SO的问题,没有人帮助过.
我的模型有一个变量'counter'.View有2个按钮,可以增加或减少模型的"计数器".简单的东西.这一切都很好,但是当我尝试在视图中监听模型更改事件时,我只会在模型创建时收到通知(创建默认值时,我会假设).
我知道计数器正在更新,因为如果我在更新模型后手动调用渲染我可以看到效果,但为了更好的mvc-ish结构,我想查看更改事件的通知并更新自身.
下面是coffeescript代码.
$ ->
class Count extends Backbone.Model
defaults: counter : 0
change: -> console.log('changed')
class Spinner extends Backbone.View
el: $('#counterView')
initialize: =>
@model = new Count()
@model.bind 'change' , @update()
events:
'click button#incBtn' : 'inc'
'click button#decBtn' : 'dec'
inc: ->
@model.set counter : @model.get('counter') + 1
dec: ->
@model.set counter : @model.get('counter') - 1
update: ->
console.log('update')
$('#num').html(@model.get 'counter')
view = new Spinner()
Run Code Online (Sandbox Code Playgroud)
HTML:
<body>
<div id="counterView">
<button id="incBtn">Increment</button>
<button id="decBtn">Decrement</button>
<div id="num">Number</div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
提前致谢.b