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');
}