小编Bra*_*odt的帖子

如何创建coffeescript singleton子类

我创建了一个我想要扩展的单例类.它(一半)的工作原理是它只创建一个类的实例,但是添加到子类的属性是未定义的.这是最初的单身人士:

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未定义.如果我在非单件类上做同样的事情,他们工作正常.谢谢.

singleton class extend node.js coffeescript

6
推荐指数
2
解决办法
1835
查看次数

绑定到在backbone.js中不在视图中工作的模型更改事件

我正在创建一个非常简单的骨干应用程序来熟悉框架.除了将模型更改事件绑定到我视图中的函数之外,所有工作都正常.我已经检查了以前关于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

events coffeescript backbone.js

3
推荐指数
1
解决办法
3693
查看次数

标签 统计

coffeescript ×2

backbone.js ×1

class ×1

events ×1

extend ×1

node.js ×1

singleton ×1