Skip to content

Instantly share code, notes, and snippets.

@designeng
Created September 12, 2013 18:59
Show Gist options
  • Save designeng/6542281 to your computer and use it in GitHub Desktop.
Save designeng/6542281 to your computer and use it in GitHub Desktop.
Base class for control resolving task
define ["marionette"], (Marionette) ->
BaseControlWrapper = Marionette.Layout.extend
initialize: (options) ->
@controlClassResolve(@model.get "controlType")
self = @
@deferred.done( (controlTypeClass) ->
self.onDeferredDone(controlTypeClass)
)
_.bindAll @, "onDeferredDone"
controlClassResolve: (controlType) ->
self = @
@deferred = $.Deferred()
require [controlType], (controlTypeClass) ->
self.deferred.resolve(controlTypeClass)
@deferred.promise()
onDeferredDone:(controlTypeView) ->
if !@model.has "context"
@model.set {"context": @}
view = new controlTypeView(
model: @model
)
@renderChildView view
renderChildView: (view) ->
@$el.find(@tagName).html view.render().el
@designeng
Copy link
Author

define ["marionette"], (Marionette) ->

BaseControlWrapper = Marionette.ItemView.extend
    initialize: (options) ->
        @getControlByType @model.get("controlType")

    getControlByType: (controlType) ->
        require [controlType], (control) =>
            @addInnerControl(control)

    addInnerControl:(controlTypeView) ->
        @model.set {"context": @} unless @model.has "context"

        @childView = new controlTypeView
            model: @model
        @renderInnerControl @childView

    renderInnerControl: (view) ->
        @$el.find(@tagName).html(view.render().el)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment