       Rivets.config.adapter.subscribe @model, @keypath, @sync
       @sync() if Rivets.config.preloadData
 
+      if @isBidirectional()
+        bindEvent @el, 'change', @publish
+
     if @options.dependencies?.length
       for dependency in @options.dependencies
         if /^\./.test dependency


        Rivets.config.adapter.subscribe model, keypath, @sync

    if @isBidirectional()
      bindEvent @el, 'change', @publish

  # Unsubscribes from the model and the element.
  unbind: =>
    unless @options.bypass
      Rivets.config.adapter.unsubscribe @model, @keypath, @sync

      if @options.dependencies?.length
        for keypath in @options.dependencies
          Rivets.config.adapter.unsubscribe @model, keypath, @sync

      if @isBidirectional()
        @el.removeEventListener 'change', @publish

# A collection of bindings built from a set of parent elements.
class Rivets.View

            path = context.shift()
            splitPath = path.split /\.|:/
            options.formatters = pipes
            options.bypass = path.indexOf(':') != -1
            if splitPath[0]
              model = @models[splitPath.shift()]
            else
              model = @models
              splitPath.shift()
            keypath = splitPath.join '.'

            if model
