 
         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
+        unbindEvent @el, 'change', @publish
+
+    if @options.dependencies?.length
+      for keypath in @options.dependencies
+        Rivets.config.adapter.unsubscribe @model, keypath, @sync
 
 # A collection of bindings built from a set of parent elements.
 class Rivets.View

#     rivets.js
#     version : 0.3.10
#     author : Michael Richards
#     license : MIT


            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
