<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <title>Angular con dinosaurios</title>
</head>

<body>
  <section ng-app="miAplicacion">
    <mi-directiva></mi-directiva>

    <div ng-controller="miControlador">

      <!-- Aquí estamos pasando cadenas -->
      <b>@, con valores definidos en el controlador:</b> 
      <directiva-scope1 dinosaurio="{{dinosaurio}}" alimento="{{alimento}}"></directiva-scope1>

      <b> @, con valores definidos en la directiva:</b>
      <directiva-scope1 dinosaurio="estegosaurio" alimento="avellanas"></directiva-scope1>

      <b> dinosaurio y alimento siguen teniendo el valor definido en el scope, y no
    el que acaban de tener el scope aislado de la directiva </b>
      <p>Al {{dinosaurio }} le gusta comer {{ alimento }}</p>

      <!-- Aquí en cambio, le pasamos las propiedades del objeto otroDinosaurio -->
      <b> =, con propiedades definidas en el controlador</b>
      <directiva-scope2 dinosaurio="otroDinosaurio.nombre" alimento="otroDinosaurio.alimento"></directiva-scope2>

      <b> =, con propiedades definidas en la directiva</b>
      <directiva-scope2 dinosaurio="otroDinosaurio.nombre='cambiado'" alimento="otroDinosaurio.alimento"></directiva-scope2>

      <b> El cambio afecta al controlador</b>
     <p> Al {{otroDinosaurio.nombre }} le gusta comer {{otroDinosaurio.alimento}}</p>

   </div>
  </section>

  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
  <script src="app.js"></script>
  <script src="controllers.js"></script>
</body>

</html>
http://www.mmfilesi.com/?p=2638
var miModulo = angular.module('miAplicacion', []);

miModulo.directive('miDirectiva', function() {
  return {
    restrict: 'E',
    replace: true,
    template: '<p> Al velocirraptor le gustan los helados </p>  '
  }
});

miModulo.directive('directivaScope1', function() {
  return {
    restrict: 'E',
    replace: true,
    scope: {
      dinosaurio: '@',
      alimento: '@'
    },
    template: '<p> Al {{dinosaurio}} le gusta comer {{alimento}} </p>  '
  }
});

miModulo.directive('directivaScope2', function() {

  return {
    restrict: 'E',
    replace: true,
    scope: {
      dinosaurio: '=',
      alimento: '='
    },
    template: '<p> Al {{dinosaurio}} le gusta comer {{alimento}} </p>  '
  }
});
miModulo.controller("miControlador", function($scope) {
    $scope.dinosaurio = "tiranosaurio";
    $scope.alimento = "picos";
    
    $scope.otroDinosaurio = { nombre : "Iguanodon", alimento : 'ciruelas' };

    $scope.funcionDinosaurioNombre = function(nombreDinosaurio) {
      $scope.otroDinosaurioMasNombre = nombreDinosaurio;
    };
  
});