Sha256: 26d3db28f9c5110ba725fdba947910fb8b95e1f7d82bffd87288c8b0e7b920c9

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

# //= require material_raingular/directives/destroy/directive
class MrDestroyModel extends AngularLinkModel
  REGEXP: /^\s*(.*?)\s+in\s+(.*?)(?:\s+track\s+by\s+([\s\S]+?))?$/
    # 1: model name
    # 2: collection name
    # 3: track by value
  @inject(
    '$parse'
    'factoryName'
    '$timeout'
  )
  initialize: ->
    @_setForm()
    @$element.bind 'click', @destroy
  @register(Directives.MrDestroy)

  destroy: =>
    return if @$attrs.disabled || @form.disabled
    @$timeout =>
      @_list().drop(@_model())
    factory = @$injector.get(@_options().factory || @factoryName(@_matchedExpression()[1]))
    factory.destroy {id: @_model().id}, @_callBack

  _callBack: (data)   => @$controller[1]?.evaluate(data)
  _model:             -> @$controller[0].$viewValue
  _list:              -> @_options().list || @$scope.$eval(@_matchedExpression()[2].split('|')[0])
  _options:           -> @$scope.$eval(@$attrs.mrOptions || '{}')
  _matchedExpression: -> @_repeatElement().getAttribute('ng-repeat').match(@REGEXP)
  _repeatElement: ->
    repeatElement = @$element[0]
    until repeatElement.hasAttribute 'ng-repeat'
      repeatElement = repeatElement.parentNode
      break if !repeatElement
    repeatElement
  _setForm: ->
    @form = @$element[0]
    until @form.nodeName == 'FORM' || !@form
      @form = @form.parentNode
      break if !@form
    @form ||= @$element[0]

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
material_raingular-0.2.5 lib/assets/javascripts/material_raingular/directives/destroy/linkmodel.coffee