Chromium Code Reviews| Index: src/site/docs/tutorials/polymer-intro/index.markdown |
| diff --git a/src/site/docs/tutorials/polymer-intro/index.markdown b/src/site/docs/tutorials/polymer-intro/index.markdown |
| index 0824abd3dd3fe8f544823137c911eae95c69aded..8fda133dbaab71fc60f128802e28124446ad4074 100644 |
| --- a/src/site/docs/tutorials/polymer-intro/index.markdown |
| +++ b/src/site/docs/tutorials/polymer-intro/index.markdown |
| @@ -47,7 +47,7 @@ A custom element is an HTML element you can define yourself, |
| encapsulating appearance and/or behavior |
| within semantically meaningful HTML. |
| -<aside class="alert"> |
| +<aside class="alert alert-info"> |
| Custom elements are one feature of |
| <a href="http://www.polymer-project.org/" |
| target="_blank">Polymer</a>, |
| @@ -68,9 +68,9 @@ is the Dart implementation of Polymer. |
| * [Overiding life-cycle methods](#life-cycle-methods) |
| * [Using data binding](#data-binding) |
| * [Setting up event handlers declaratively](#event-handlers) |
| -* [Querying the Shadow DOM](#in-the-shadows) |
| * [Styling a custom element](#scoped-css) |
| * [Other resources](#other-resources) |
| +* [What next?](#what-next) |
| ##An example |
| @@ -284,7 +284,7 @@ is normal HTML, with two exceptions: |
| |---|---| |
| | `{``{``counter}}` | Uses a Polymer syntax to [bind Dart data](#data-binding) to the HTML page. The double curly braces are commonly known as a "double mustache". | |
| -| `on-click` | Uses Polymer [declarative event mapping](#event-handlers), which allows you to set up event handlers for a UI element. `on-click` sets up an event handler for mouse clicks. Polymer has mappings for other event types, such as `on-change` for input change events. | |
| +| `on-click` | Uses Polymer [declarative event mapping](#event-handlers), which allows you to set up event handlers for a UI element. `on-click` sets up an event handler for mouse clicks. Polymer has mappings for other event types, such as `on-input` for changes to text fields. | |
| {: .table} |
| Let's take a look at the structure of the Dart code |
| @@ -304,11 +304,9 @@ This diagram gives an overview of the TuteStopwatch class: |
|  |
| Any Dart class that backs a Polymer element must subclass PolymerElement. |
| -If you want to use data binding, the class must also use ObservableMixin. |
| {% comment %} |
| [xx: more about PolymerElement] |
| -[xx: more about ObservableMixin] |
| {% endcomment %} |
| The class can respond to life-cycle milestones |
| @@ -343,21 +341,24 @@ so that it can enable and disable them. |
| When a tute-stopwatch custom element is inserted into the DOM |
| the buttons have been created, so the references to them |
| will be available when the inserted() method is called. |
| -You'll notice that it gets the buttons by |
| -[querying the custom element's shadow root](#in-the-shadows). |
| {% prettify dart %} |
| void inserted() { |
| super.inserted(); |
| - startButton = getShadowRoot('tute-stopwatch').query('#startButton'); |
| - stopButton = getShadowRoot('tute-stopwatch').query('#stopButton'); |
| - resetButton = getShadowRoot('tute-stopwatch').query('#resetButton'); |
| + startButton = $['startButton']; |
| + stopButton = $['stopButton']; |
| + resetButton = $['resetButton']; |
| stopButton.disabled = true; |
| resetButton.disabled = true; |
| } |
| {% endprettify %} |
| +The code uses _automatic node finding_, a Polymer feature, |
| +to get a reference to each button. |
| +Every node in a custom element that is tagged with an `id` attribute |
| +can be referenced by its ID using the syntax: `$['ID']`. |
| + |
| ##Using data binding {#data-binding} |
| In the HTML definition of a custom element, |
| @@ -380,6 +381,10 @@ because the data can change only on the Dart side. |
| Polymer also supports two-way data binding. |
| In two-way data binding, when data changes on the HTML side—for example |
| with an input element—the value in the Dart code changes to match. |
| +For more information about two-way binding, |
| +plus examples of using it with a variety of |
| +HTML5 widgets, check out |
| +[Two-way data binding using Polymer](/docs/tutorials/forms/#binding-data). |
|
Kathy Walrath
2013/10/11 16:36:03
When I followed this link, I was a bit disoriented
mem
2013/10/11 18:21:30
Done.
|
| You can use expressions within the double curly brackets. |
| <a href="http://pub.dartlang.org/packages/polymer_expressions" |
| @@ -419,13 +424,14 @@ such as its type and when it occurred. |
| that fired the event—the **Start** button in this case. |
| You can attach event handlers for other kinds of events. |
| -For example, you can use `on-change` to handle events for input text elements |
| -when the text changes. |
| +For example, you can use `on-input` to handle events |
| +for input text elements when the text changes. |
| Refer to |
| [Declarative event mapping](http://www.polymer-project.org/polymer.html#declarative-event-mapping) |
| for further details. |
| +{% comment %} |
| ##Querying the shadow root {#in-the-shadows} |
| The Shadow DOM is key to encapsulation. |
| @@ -453,6 +459,7 @@ Note that this code uses `query()` to get each button by ID. |
| By querying the shadow root object rather than the DOM, |
| you are guaranteed to get the objects from within the custom element, |
| not from anywhere else on the page. |
| +{% endcomment %} |
| ##Styling a custom element {#scoped-css} |
| @@ -464,7 +471,8 @@ that apply only to the contents of the custom element. |
| The `@host` rule allows you to target and style an element internally, |
| from within its definition. |
| The `:scope` pseudo-class refers to the custom element itself. |
| -The only selectors that work in `@host` are those targeting the host element itself. |
| +The only selectors that work within `@host` are those contained |
| +in the host element itself. |
| So you don't need to worry about naming conflicts on the page. |
| Any CSS selectors within the template need to be unique only within the template. |
| @@ -492,6 +500,28 @@ Use these other resources to learn more about Polymer: |
| target="_blank">polymer-project.org</a> |
| contains information about the Polymer project as a whole. |
| +##What next? |
| + |
| +[Two-way data binding with Polymer](/docs/tutorials/forms/#binding-data) |
| +in the tutorial about forms shows how to use two-way data binding |
|
Kathy Walrath
2013/10/11 16:36:03
ah, I see you gave the context here. (just do the
mem
2013/10/11 18:21:30
Done.
|
| +with various types of input elements such as text fields, color pickers, |
| +and so on. |
| + |
| +Check out these other tutorial examples that use Polymer. |
|
Kathy Walrath
2013/10/11 16:36:03
. -> :
mem
2013/10/11 18:21:30
Done.
|
| + |
| +* <a href="https://github.com/dart-lang/dart-tutorials-samples/tree/master/web/fetchdata/its_all_about_you" |
| + target="_blank">its_all_about_you</a> |
| +* <a href="https://github.com/dart-lang/dart-tutorials-samples/tree/master/web/forms/slambook" |
| + target="_blank">slambook</a> |
| +* <a href="https://github.com/dart-lang/dart-tutorials-samples/tree/master/web/indexeddb/count_down" |
| + target="_blank">count_down</a> |
| + |
| +The next tutorial, |
| +[Fetch Data Dynamically](/docs/tutorials/fetchdata/), |
| +shows you how to fetch data |
| +and use JSON to encode and decode |
| +that data. |
| + |
| {% endcapture %} |
| {% include tutorial.html %} |