我正在阅读Google Polymer的文档,有两种类型的数据绑定,Node.bind()和Template Binding,那么,Node.bind()和Template Binding有什么区别
答案 0 :(得分:1)
它们是实现数据绑定的两种方式。一个在DOM节点的上下文中,另一个在模板的上下文中。
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
更新。
Polymer文档指出,这扩展了您可以使用HTML <template>
标记执行的操作 - 具体来说,您可以访问四个新属性:bind
,repeat
,{{1} }和if
。
所以,我们想说我们希望将ref
传递给foo
我们希望在我们的模板内容中使用,但希望保持同步,以便随时<template>
更改后,模板也会更新。 foo
与bind
一样直截了当:
<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文档中找到有关这些属性可以执行的操作的更多示例。