Todd Motto's angular.extend instead of vm = this with private object
HTML
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<div ng-app="app" ng-controller="loginController as vm">
<input ng-model="vm.model.username" />
<input ng-model="vm.model.password" />
<button ng-click="vm.login()">Login</button>
</div>
JavaScript
angular.module('app', [])
.controller('loginController', function loginController() {
var model = {};
function login() {
alert('"this" vars: ' + model.username + ' | ' + model.password);
}
alert (this);
angular.extend(this, {
model: model,
login: login
});
});