anchor.diff:    
     `$event`对象的形态取决于所触发的事件。
     这个`keyup`事件来自DOM，所以`$event`必须是一个[标准的DOM事件对象](https://developer.mozilla.org/en-US/docs/Web/API/Event)。
  -  `$event.target`给了我们一个[`HTMLInputElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement)对象，它有一个`value`属性，是用户所输入的数据。
  +  `$event.target`给了我们一个[`HTMLInputElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement)对象，它有一个`value`属性，其中包含用户所输入的数据。
   
     The `onKey()` component method is where we extract the user's input
     from the event object, adding that input to the list of user data that we're accumulating in the component's `values` property.
     We then use [interpolation](./template-syntax.html#interpolation)
     to display the accumulating `values` property back on screen.
   
  -  组件的`onKey()`方法是用来从事件对象中提取出用户输入的，它把输入的值累加组件的`values`属性里，我们利用这个属性来累计用户数据。
  +  在组件的`onKey()`方法中，先从事件对象提取出用户输入，再把输入的值累加组件的`values`属性里，我们利用这个属性来累计用户数据。
     然后我们使用[插值表达式](./template-syntax.html#interpolation)来把存放累加结果的`values`属性回显到屏幕上。
     
     Enter the letters "abc", and then backspace to remove them.
     Here's what the UI displays:
     
     输入字母"abc"，然后用退格键删除它们。
  -  UI上的显示如下：
  +  界面上的显示如下：
   code-example().
     a | ab | abc | ab | a | |
   figure.image-display
  
positive.code:   would be to put the update code in the component.)
    
    只有在这种情况下，我们才更新组件的`values`属性。
    (在这个例子中，更新代码是写在事件绑定语句中的。但在实践中更好的方式是把更新代码放到组件中。)
  +makeExample('user-input/ts/app/keyup.components.ts', 'key-up-component-3' ,'app/keyup.components.ts (v3)')(format=".")
  :marked
    Here's how it works.
  
negative.code:   keyup example so that it uses the variable to get the user's input. Let's give it a try.
    
    模板引用变量很有意思。它用一个变量就简洁明了的获得了文本框，而不再需要通过`$event`对象。
    也许我们可以重写前面的keyup范例，用这个变量来获得用户输入。我们这就试试看。
  +makeExample('user-input/ts/app/keyup.components.ts', 'key-up-component-2' ,'app/keyup.components.ts (v2)')(format=".")
  :marked
    That sure seems easier.
  