Question

I have this code, written with Angular 1.2: http://jsfiddle.net/VmkQy/1/

<div ng-app="app">
    Title is: <span my-directive data-title="Test title">{{ title }}</span>
</div>

angular.module('app', [])
    .directive('myDirective', [function() {
        return {
            restrict: 'A',
            scope: {title:'@'},
            link: function($scope) {
                alert($scope.title);   
            }
        }
    }])
;

Scope has a title property, but it does not rendered. Why?

If I change directive config to scope:true, it will works fine: http://jsfiddle.net/VmkQy/2/

angular.module('app', [])
    .directive('myDirective', [function() {
        return {
            restrict: 'A',
            scope: true,
            link: function($scope, $element, attrs) {
                $scope.title = attrs.title;
                alert($scope.title);   
            }
        }
    }])
;

This is a bug or feature in Angular 1.2? Older version works fine in all this cases: http://jsfiddle.net/VmkQy/3/

Was it helpful?

Solution

The {{title}} inside of your <span /> gets replaced. Add template: "{{title}}" to your directive and it works:

http://jsfiddle.net/VmkQy/5/

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top