Complete the RecipeBook controller

This commit is contained in:
Andrew Miner
2014-12-23 09:12:02 -08:00
parent 9fc0407fe4
commit b05fc4c5c9
19 changed files with 205 additions and 50 deletions
+38 -1
View File
@@ -12,6 +12,9 @@ views = require '../views'
module.exports = class BaseController extends Backbone.View
constructor: (options={})->
Object.defineProperty this, 'model', get:@getModel, set:@setModel
@_model = null
@_rendered = false
@_parent = options.parent
@_children = []
@@ -35,10 +38,40 @@ module.exports = class BaseController extends Backbone.View
# Event Methods ################################################################################
onDidModelChange: ->
@_tryRefresh()
onDidModelSync: ->
@_tryRefresh()
onWillRender: -> # do nothing
onDidRender: ->
@refresh()
@_tryRefresh()
onWillShow: -> # do nothing
onDidShow: -> # do nothing
onWillChangeModel: (oldModel, newModel)->
if oldModel?.on?
@stopListening oldModel
if newModel?.on?
@listenTo newModel, 'sync', (e)=> @onDidModelSync e
@listenTo newModel, 'change', (e)=> @onDidModelChange e
return true
# Property Methods #############################################################################
getModel: ->
return @_model
setModel: (newModel)->
return if @model is newModel
return unless @onWillChangeModel @_model, newModel
@_model = newModel
@_tryRefresh()
# Backbone.View Overrides ######################################################################
@@ -75,3 +108,7 @@ module.exports = class BaseController extends Backbone.View
_loadTemplate: (templateName)->
if templateName?
@_template = views[templateName]
_tryRefresh: ->
return unless @_rendered
@refresh()