I discovered a strange little problem today. When working with forms in Angular, the form name cannot be the same as the name of a method on the scope.

Example:

<form name="changePassword" ng-submit="changePassword()">
	<input type="password" ng-model="data.password" />
</form>

...

$scope.changePassword = function() {
	console.log('Changing Password');
}

If you do this, submitting the form will error with TypeError: object is not a function

To fix, you must ensure the form name is not the same as a method on the scope.

<form name="changePasswordForm" ng-submit="changePassword()">
	<input type="password" ng-model="data.password" />
</form>

...

$scope.changePassword = function() {
	console.log('Changing Password');
}