Angular directives with isolate scopes have three different variable binding strategies, of which one is =. Example:
# HTML
<panel value="parent.someFn() && false" twoway="parent.someProperty"></div>
# Coffeescript
@app.directive 'panel', ->
scope:
evaluated: '=value'
bound: '=twoway'
link: ->
scope.evaluated # = false
scope.bound = 'foo' # Updates parent.someProperty
HTML attributes bound with = (value, twoway) have their value evaluated as Angular expression in the parent scope's context and have the result assigned to the corresponding scope variable (evaluated, bound). It's a one-way binding – if the expression changes, the isolate scope's value will update.
Additionally, if the attribute value is a property of the parent scope (like "someProperty", instead of an expression like "1+2"), i.e. it is writable by any means, Angular will set up a two-way binding between that property and the isolate scope's property. Changes in either will reflect to the other.
Also see Angular isolate scopes: Calling a parent scope function with externally defined arguments.