Added docu.

This commit is contained in:
Martin Edenhofer 2014-06-17 02:22:25 +02:00
parent 90be104755
commit b03bfe7327

View file

@ -162,6 +162,18 @@ class App.Model extends Spine.Model
return true return true
return false return false
###
methodWhichIsCalledAtLocalOrServerSiteChange = (changedItems) ->
console.log("Collection has changed", changedItems, localOrServer)
params =
initFetch: true # fetch inital collection
@subscribeId = App.Model.subscribe( methodWhichIsCalledAtLocalOrServerSiteChange )
###
@subscribe: (callback, param = {}) -> @subscribe: (callback, param = {}) ->
if !@SUBSCRIPTION_COLLECTION if !@SUBSCRIPTION_COLLECTION
@SUBSCRIPTION_COLLECTION = {} @SUBSCRIPTION_COLLECTION = {}
@ -188,7 +200,7 @@ class App.Model extends Spine.Model
@SUBSCRIPTION_COLLECTION[key] = callback @SUBSCRIPTION_COLLECTION[key] = callback
# fetch init collection # fetch init collection
if param['initFetch'] is true if param.initFetch is true
@one 'refresh', (collection) => @one 'refresh', (collection) =>
callback(collection) callback(collection)
@fetch( {}, { clear: true } ) @fetch( {}, { clear: true } )
@ -196,7 +208,17 @@ class App.Model extends Spine.Model
# return key # return key
key key
subscribe: (callback) -> ###
methodWhichIsCalledAtLocalOrServerSiteChange = (changedItem, localOrServer) ->
console.log("Item has changed", changedItem, localOrServer)
model = App.Model.find(1)
@subscribeId = model.subscribe( methodWhichIsCalledAtLocalOrServerSiteChange )
###
subscribe: (callback, type) ->
# init bind # init bind
if !App[ @constructor.className ]['SUBSCRIPTION_ITEM'] if !App[ @constructor.className ]['SUBSCRIPTION_ITEM']
@ -209,7 +231,7 @@ class App.Model extends Spine.Model
#console.log('BIND', item) #console.log('BIND', item)
for key, callback of App[ @constructor.className ]['SUBSCRIPTION_ITEM'][ item.id ] for key, callback of App[ @constructor.className ]['SUBSCRIPTION_ITEM'][ item.id ]
item = App[ @constructor.className ]._fillUp( item ) item = App[ @constructor.className ]._fillUp( item )
callback(item) callback(item, 'local')
) )
# subscribe and render data after server change # subscribe and render data after server change
@ -221,7 +243,9 @@ class App.Model extends Spine.Model
if App[ @constructor.className ]['SUBSCRIPTION_ITEM'] && App[ @constructor.className ]['SUBSCRIPTION_ITEM'][ item.id ] if App[ @constructor.className ]['SUBSCRIPTION_ITEM'] && App[ @constructor.className ]['SUBSCRIPTION_ITEM'][ item.id ]
#console.log('SERVER BIND', item) #console.log('SERVER BIND', item)
for key, callback of App[ @constructor.className ]['SUBSCRIPTION_ITEM'][ item.id ] for key, callback of App[ @constructor.className ]['SUBSCRIPTION_ITEM'][ item.id ]
App[ @constructor.className ].retrieve( item.id, callback, true ) callbackRetrieve = (item) ->
callback(item, 'server')
App[ @constructor.className ].retrieve( item.id, callbackRetrieve, true )
'Item::Subscribe::' + @constructor.className 'Item::Subscribe::' + @constructor.className
) )
@ -234,6 +258,14 @@ class App.Model extends Spine.Model
# return key # return key
key key
###
unsubscribe from model or collection
App.Model.unsubscribe( @subscribeId )
###
@unsubscribe: (data) -> @unsubscribe: (data) ->
if @SUBSCRIPTION_ITEM if @SUBSCRIPTION_ITEM
for id, keys of @SUBSCRIPTION_ITEM for id, keys of @SUBSCRIPTION_ITEM