Sha256: 472c50b0e6321bac549bf6943caedc57347b30e938c6c4fcd94cb4d9170ff6ff

Contents?: true

Size: 708 Bytes

Versions: 3

Compression:

Stored size: 708 Bytes

Contents

# Luca.Model
#
# Luca.Model is an extenstion of Backbone.Model which provides
# few useful patterns:
#
#   - computed properties support
_.def('Luca.Model').extends('Backbone.Model').with
  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

3 entries across 3 versions & 1 rubygems

Version Path
luca-0.9.2 src/core/model.coffee
luca-0.9.1 src/core/model.coffee
luca-0.9.0 src/core/model.coffee