<!DOCTYPE html>
<html ng-app="with-scope">
<head>
<link data-require="foundation@*" data-semver="5.0.0" rel="stylesheet" href="//cdn.jsdelivr.net/foundation/5.0.0/css/normalize.css" />
<link data-require="foundation@*" data-semver="5.0.0" rel="stylesheet" href="//cdn.jsdelivr.net/foundation/5.0.0/css/foundation.min.css" />
<script data-require="jquery@*" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script data-require="angular.js@*" data-semver="1.2.9" src="http://code.angularjs.org/1.2.9/angular.js"></script>
<script src="script.js"></script>
</head>
<body ng-controller='Ctrl'>
<p>
The number: {{model.number}}
</p>
<even-or-odd number="model.number"></even-or-odd>
</body>
</html>
angular.module('with-scope', []).
controller('Ctrl', function($scope){
$scope.model = {
number: 40
};
}).
directive('evenOrOdd', function($parse){
return {
restrict: 'E',
template: "<input style='width: 40px; display: inline' type='text' ng-model='evenOrOddNumber' /> {{evenOrOdd}}",
link: function(scope, el, attrs){
var number = $parse(attrs.number);
// assign number to local scope
scope.$watch(number, function(val){
scope.evenOrOddNumber = val;
});
scope.$watch('evenOrOddNumber', function(val){
// publish whether the number is even or odd
scope.evenOrOdd = (val % 2) ? 'odd' : 'even';
// sync number with outer scope
number.assign(scope, val);
});
}
}
});