Sha256: 84fc981910d9e9a8eb128bc8a93f21b274f9c8ce8551ba0c0d082cfe07b9548b

Contents?: true

Size: 692 Bytes

Versions: 4

Compression:

Stored size: 692 Bytes

Contents

# Luca.Model
#
# Luca.Model is an extenstion of Backbone.Model which provides
# few useful patterns:
#
#   - computed properties support
Luca.Model = Backbone.Model.extend
  initialize: ()->
    Backbone.Model::initialize @, arguments

    return if _.isUndefined(@computed)

    @_computed = {}

    for attr, dependencies of @computed
      @on "change:#{attr}", ()=>
        @_computed[attr] = @[attr].call @

      _(dependencies).each (dep)=>
        @on "change:#{dep}", ()=>
          @trigger "change:#{attr}"
        @trigger "change:#{attr}" if @has(dep)

  get: (attr)->
    if @computed?.hasOwnProperty(attr)
      @_computed[attr]
    else
      Backbone.Model::get.call @, attr

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
luca-0.8.3 src/core/model.coffee
luca-0.8.2 src/core/model.coffee
luca-0.8.06 src/core/model.coffee
luca-0.8 src/core/model.coffee