Node.bind()和Template Binding有什么区别

时间:2014-02-04 05:02:50

标签: javascript html5 polymer

我正在阅读Google Polymer的文档,有两种类型的数据绑定,Node.bind()和Template Binding,那么,Node.bind()和Template Binding有什么区别

1 个答案:

答案 0 :(得分:1)

它们是实现数据绑定的两种方式。一个在DOM节点的上下文中,另一个在模板的上下文中。

Node.bind()

Node.bind()允许您告诉DOM节点将命名属性绑定到您提供的某些数据。下面,我们将属性value(object.path.to.value)绑定到textNode中的.textContent

var obj = {
  path: {
    to: {
      value: 'hi'
    }
  }
};

var textNode = document.createTextNode('mytext');
textNode.bind('textContent', obj, 'path.to.value');

这很简洁,因为随时value更改,Node.bind()会使您的.textContent更新。

TemplateBinding

Polymer文档指出,这扩展了您可以使用HTML <template>标记执行的操作 - 具体来说,您可以访问四个新属性:bindrepeat,{{1} }和if

所以,我们想说我们希望将ref传递给foo我们希望在我们的模板内容中使用,但希望保持同步,以便随时<template>更改后,模板也会更新。 foobind一样直截了当:

<template bind="{{ foo }}">
  Creates a single instance with {{ foo }} when singleton model data is provided.
</template>
当你使用列表或数据集合时,

repeat非常有用 - 比如用户:

<template repeat="{{ user in users }}">
  <li>{{user.name}}</li>
</template>

if对于模板中的条件值非常方便:

<template if="{{ conditionalValue }}">
  Binds if and only if conditionalValue is truthy. (same as *bind if*)
</template>

等等。您可以在TemplateBinding文档中找到有关这些属性可以执行的操作的更多示例。