   # Updates the binding's model from what is currently set on the view. Unbinds
   # the old model first and then re-binds with the new model.
   update: (models = {}) =>
-    @model = @observer.target
+    @model = @observer?.target
     @unbind()
     @binder.update?.call @, models
     @bind()

  # Unsubscribes from the model and the element.
  unbind: =>
    @binder.unbind?.call @, @el
    @observer.unobserve()

    observer.unobserve() for observer in @dependencies
    @dependencies = []

      root: @view.rootInterface
      adapters: @view.adapters

  parseTarget: =>
    token = Rivets.TypeParser.parse @keypath

    if token.type is 0
      @value = token.value
    else
      @observer = @observe @view.models, @keypath, @sync
      @model = @observer.target

  # Applies all the current formatters to the supplied value and returns the
  # formatted value.
  formattedValue: (value) =>
