To be able to access the form in your controller, you have to add it to a dummy scope object.
Something like $scope.dummy = {}
For your situation this would mean something like:
<form name="dummy.customerForm">
In your controller you will be able to access the form by:
$scope.dummy.customerForm
and you will be able to do stuff like
$scope.dummy.customerForm.$setPristine()
Having a '.' in your models will ensure that prototypal inheritance is in play. So, use
<input type="text" ng-model="someObj.prop1">
rather than<input type="text" ng-model="prop1">
If you really want/need to use a primitive, there are two workarounds:
1.Use $parent.parentScopeProperty in the child scope. This will prevent the child scope from creating its own property. 2.Define a function on the parent scope, and call it from the child, passing the primitive value up to the parent (not always possible)