I'm really surprised that the function binding below worked
<!DOCTYPE html>
<html ng-app="App" ng-controller="mainCtrl as main">
<head lang="en">
<meta charset="UTF-8">
<script type="application/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
<script type="application/javascript">
var Controllers;
(function (Controllers) {
var mainCtrl = (function () {
function mainCtrl() {
this.a = 0;
this.b = 0;
}
mainCtrl.prototype.getSum = function () {
return this.a + this.b;
};
return mainCtrl;
})();
Controllers.mainCtrl = mainCtrl;
})(Controllers || (Controllers = {}));
angular.module("App", []).controller("mainCtrl", Controllers.mainCtrl);
</script>
</head>
<body>
a = <input type="number" ng-model="main.a">
<br/>
b = <input type="number" ng-model="main.b">
<br/>
Sum is = {{main.getSum()}}
</body>
</html>
How does angular now that it needs to update the function binding?