aboutsummaryrefslogtreecommitdiffstats
path: root/docs/angular.formatter.ngdoc
diff options
context:
space:
mode:
authorMisko Hevery2010-11-22 12:05:01 -0800
committerMisko Hevery2010-12-06 15:48:40 -0800
commit58d0e8945d772eddbfecbe6a645b2f1c4dd38bf2 (patch)
tree2f6b7ec1b0cc09a1976c381c42452d258d239ca8 /docs/angular.formatter.ngdoc
parent2bbced212e2ee93948c45360fee00b2e3f960392 (diff)
downloadangular.js-58d0e8945d772eddbfecbe6a645b2f1c4dd38bf2.tar.bz2
allow documentation to be in external file
* Load templates once instead of per request * show timing information * load files ending in .ngdoc and process them
Diffstat (limited to 'docs/angular.formatter.ngdoc')
-rw-r--r--docs/angular.formatter.ngdoc78
1 files changed, 78 insertions, 0 deletions
diff --git a/docs/angular.formatter.ngdoc b/docs/angular.formatter.ngdoc
new file mode 100644
index 00000000..ba28471f
--- /dev/null
+++ b/docs/angular.formatter.ngdoc
@@ -0,0 +1,78 @@
+@workInProgress
+@ngdoc overview
+@name angular.formatter
+@namespace Namespace for all formats.
+@description
+# Overview
+The formatters are responsible for translating user readable text in an input widget to a
+data model stored in an application.
+
+# Writting your own Formatter
+Writing your own formatter is easy. Just register a pair of JavaScript functions with
+`angular.formatter`. One function for parsing user input text to the stored form,
+and one for formatting the stored data to user-visible text.
+
+Here is an example of a "reverse" formatter: The data is stored in uppercase and in
+reverse, while it is displayed in lower case and non-reversed. User edits are
+automatically parsed into the internal form and data changes are automatically
+formatted to the viewed form.
+
+<pre>
+function reverse(text) {
+ var reversed = [];
+ for (var i = 0; i < text.length; i++) {
+ reversed.unshift(text.charAt(i));
+ }
+ return reversed.join('');
+}
+
+angular.formatter('reverse', {
+ parse: function(value){
+ return reverse(value||'').toUpperCase();
+ },
+ format: function(value){
+ return reverse(value||'').toLowerCase();
+ }
+});
+</pre>
+
+@example
+<script type="text/javascript">
+function reverse(text) {
+ var reversed = [];
+ for (var i = 0; i < text.length; i++) {
+ reversed.unshift(text.charAt(i));
+ }
+ return reversed.join('');
+}
+
+angular.formatter('reverse', {
+ parse: function(value){
+ return reverse(value||'').toUpperCase();
+ },
+ format: function(value){
+ return reverse(value||'').toLowerCase();
+ }
+});
+</script>
+
+Formatted:
+<input type="text" name="data" value="angular" ng:format="reverse"/>
+<br/>
+
+Stored:
+<input type="text" name="data"/><br/>
+<pre>{{data}}</pre>
+
+
+@scenario
+it('should store reverse', function(){
+ expect(element('.doc-example input:first').val()).toEqual('angular');
+ expect(element('.doc-example input:last').val()).toEqual('RALUGNA');
+
+ this.addFutureAction('change to XYZ', function($window, $document, done){
+ $document.elements('.doc-example input:last').val('XYZ').trigger('change');
+ done();
+ });
+ expect(element('.doc-example input:first').val()).toEqual('zyx');
+});