Angular.js: passando referência à diretiva

Ao usar pela primeira vez a função de vinculação em uma diretiva, esperava que os valores de atributo estivessem disponíveis por meio do argumento attrs.

Acontece que quando você deseja passar uma referência do escopo pai, você precisa usar o atributo de escopo no objeto de definição de diretiva.

<pre ng-app="app" ng-controller="TestCtrl">
controller:
<span ng-bind="user.username"></span>
directive:
<span my-user="user"></span>
</pre>

var app = angular.module('app', []);

app
.controller('TestCtrl', function($scope) {
$scope
.user = { username: 'Ben' };
});

app
.directive('myUser', function() {
return {
template:
'<span ng-bind="user.username"></span>',
scope
: { user: '=myUser' },
link
: function(scope, element, attrs) {
/*
* returns: 'user'

* attrs.myUser is just the string, you

* should use scope on the directive

* definition object

*/

console
.log(attrs.myUser);

// returns: 'Ben'
console
.log(scope.user.username);
}
};
});