Angular 2-way binding

2-way skips a cycle of digest

HTML

<div ng-app="myApp" ng-controller="Ctrl1">
  <my-element types="list" result='ctrlModel'></my-element>
</div>

JavaScript

function Ctrl1($scope) {
  $scope.list = [{
    id: 1,
    name: 'Name 1'
  }, {
    id: 2,
    name: 'Name 2'
  }, {
    id: 3,
    name: 'Name 3'
  }];
  $scope.ctrlModel = {
    selected: -1
  }
  $scope.result = 10;
}

angular.module('myApp', []).directive('myElement', function() {
  return {
    restrict: 'E',
    scope: {
      'types': '=',
      'result': '='
    },
    template: '<div ng-repeat="type in types" ><input type="radio" id={{type.id}} ng-model="result.selected" ng-value="type.id" >{{type.name}}</div> Result {{result.selected}}',
    link: function(scope, iElement, iAttrs) {
      console.log(scope.result)

    }
  }
});