From 57f471ca11b69c6e7646b267513f7817f0e9e762 Mon Sep 17 00:00:00 2001 From: Naomi Black Date: Wed, 22 Apr 2015 00:23:36 -0700 Subject: [PATCH] docs(devguide): Add user input chapter for dart --- .../dart/latest/guide/user-input-example1.png | Bin 0 -> 21467 bytes public/docs/dart/latest/guide/user-input.jade | 137 ++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 public/docs/dart/latest/guide/user-input-example1.png create mode 100644 public/docs/dart/latest/guide/user-input.jade diff --git a/public/docs/dart/latest/guide/user-input-example1.png b/public/docs/dart/latest/guide/user-input-example1.png new file mode 100644 index 0000000000000000000000000000000000000000..91e2dcfed1129e6e26f49fd9d251f846769f0fa6 GIT binary patch literal 21467 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 Hu0mjfDL7(p literal 0 HcmV?d00001 diff --git a/public/docs/dart/latest/guide/user-input.jade b/public/docs/dart/latest/guide/user-input.jade new file mode 100644 index 0000000000..db83a31230 --- /dev/null +++ b/public/docs/dart/latest/guide/user-input.jade @@ -0,0 +1,137 @@ +.l-main-section + p. + You can make your application respond to user input by associating events with functions in your controller + using the event syntax using () to surround the name of an event. + p. + For a particular control like an input you can have it call methods on your controller on keyup event like so: + + pre.prettyprint.lang-html + code. + <input (keyup)="myControllerMethod()"> + p. + As in previous examples, you can make element references available to other parts of the template as a local + variable using the # syntax. With this and events, we can do the old "update text as you type" example: + + pre.prettyprint.lang-html + code. + <input #my-name (keyup)> + <p>{{my-name.value}}</p> + + p.text-body(ng-non-bindable). + The #my-name creates a local variable in the template that we'll refer to below in the + <p> element. The (keyup) tells Angular to trigger updates when it gets a keyup + event. And the {{my-name.value}} binds the text node of the <p> element to the + input's value property. + p Let's do something a little more complex where users enter items and add them to a list like this: + div(align='center') + img(src='user-input-example1.png') + + +.l-main-section + h2#section-create-an-array-property Create an array property + p. + With the default bootstrapping in place, create a TodoController class that will manage interactions with the + list. Inside TodoController, add an array with an initial list of items. Then add a method that pushes new items + on the array when called. + + pre.prettyprint.linenums.lang-dart + code. + class TodoList { + List<String> todos = + ['Eat breakfast', 'Walk dog', 'Breathe', 'Learn Angular']; + + addTodo(String todo) { + todos.add(todo); + } + +.callout.is-helpful + header Production Best Practice + p. + As with the previous example, in a production application you will separate your model out into another class + and inject it into TodoController. We've omitted it here for brevity. + +.l-main-section + h2#section-display-the-list-of-todos Display the list of todos + p. + Using the *for iterator, create an <li> for each item in the todos array and set + its text to the value. + + pre.prettyprint.linenums.lang-html + code. + <ul> + <li *for="#todo of todos"> + {{ todo }} + </li> + </ul> + +.l-main-section + h2#section-add-todos-to-the-list Add todos to the list via button click + p. + Now, add a text input and a button for users to add items to the list. As you saw above, you can create a local + variable reference in your template with #varname. Call it #todotext here. + + pre.prettyprint.lang-html + code. + <input #todotext> + p. + Lastly, specify the target of the click event binding as your controller's addTodo() method and pass + it the value. Since you created a reference called todotext, you can get the value with + todotext.value. + + pre.prettyprint.lang-html + code. + <button (click)="addTodo(todotext.value)">Add Todo</button> + + p And then create the doneTyping() method on TodoList and handle adding the todo text. + + pre.prettyprint.lang-dart + code. + doneTyping(KeyboardEvent event) { + if (event.which == 13) { + InputElement e = event.target; + addTodo(e.value); + e.value = null; + } + } + +.l-main-section + h2#section-final-code Final Code + p Here's the final todo_list.dart + pre.prettyprint.lang-dart + code. + part of user_input; + + @Component( + selector: 'todo-list' + ) + @View( + // Without r before ''' (a raw string), $event breaks Angular! + // An alternative is to use \$event instead. + template: ''' + <ul> + <li *for="#todo of todos"> + {{ todo }} + </li> + </ul> + + <input #todotext (keyup)="doneTyping($event)"> + <button (click)="addTodo(todotext.value)">Add Todo</button> + ''', + directives: const[For] + ) + class TodoList { + List<String> todos = + ['Eat breakfast', 'Walk dog', 'Breathe', 'Learn Angular']; + + addTodo(String todo) { + todos.add(todo); + } + + doneTyping(KeyboardEvent event) { + if (event.which == 13) { + InputElement e = event.target; + addTodo(e.value); + e.value = null; + } + } + } \ No newline at end of file