Sha256: 4a03b7884bf339ed78b21f7c58fded7a81910c06db4c1c41b98a6b929d932ae9

Contents?: true

Size: 969 Bytes

Versions: 4

Compression:

Stored size: 969 Bytes

Contents

require 'glimmer/data_binding/observable'
require 'glimmer/data_binding/observer'

module Glimmer
  module DataBinding
    class ElementBinding
      include Glimmer
      include Observable
      include Observer

      attr_reader :element, :property
      def initialize(element, property, translator = nil)
        @element = element
        @property = property
        @translator = translator || proc {|value| value}

        # TODO see if this is needed in Opal
#         if @element.respond_to?(:dispose)
#           @element.on_widget_disposed do |dispose_event|
#             unregister_all_observables
#           end
#         end
      end
      
      def call(value)
        converted_value = translated_value = @translator.call(value)
        @element.set_attribute(@property, converted_value) unless evaluate_property == converted_value
      end
      
      def evaluate_property        
        @element.send(@property)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
glimmer-dsl-opal-0.4.0 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-opal-0.3.0 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-opal-0.2.0 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-opal-0.1.0 lib/glimmer/data_binding/element_binding.rb