The documentation might seem a bit fuzzy but the usage is quite simple.
What you need to do:
-
HTML:
<input ng-model="pageModel.myGetterSetterFunc" ng-model-options=" {getterSetter: true }">
-
in JS controller, instead of the actual model, create a function that will return the value (+ apply stripping) if the there is no parameter sent and that will update the model (+ apply other changes) if a parameter is sent.
The getter/setters is basically another “layer” between the view value and model value.
Example:
$scope.pageModel.firstName="";
$scope.pageModel.myGetterSetterFunc: function (value) {
if (angular.isDefined(value)) {
$scope.pageModel.firstName = value + '...';
} else {
return $scope.pageModel.firstName.substr(0,
$scope.pageModel.firstName.lastIndexOf('...')
);
}
}
DEMO PLUNKER:
http://plnkr.co/edit/Zyzg6hLMLlOBdjeW4TO0?p=preview
(check console – http://screencast.com/t/3SlMyGnscl)
NOTE: It would be interesting to see how would this scale in terms of reusability. I would advise to create these getter/setters as externalized reusable methods and have generators for them (because the data model is different for each case). And in controllers to only call those generators. Just my 2 cents.