Polymer JS中bind()和bind Property()的区别是什么?

时间:2015-01-11 00:41:26

标签: javascript data-binding polymer

似乎bind()是Web组件规范的一部分,Polymer因各种原因with Node.bind()而扩展。

这是docs on bindProperty()。这只是bind()的内部实现/ polyfill吗?因此,开发人员应该使用bind()而不是bindProperty()

1 个答案:

答案 0 :(得分:4)

答案在bind - line 56的源代码中(下面的完整摘录)。 bind函数调用内部bindProperty函数。 bindbindProperty之上所做的就是确保给定的属性存在。

bind: function(name, observable, oneTime) {
var property = this.propertyForAttribute(name);
if (!property) {
  // TODO(sjmiles): this mixin method must use the special form
  // of `super` installed by `mixinMethod` in declaration/prototype.js
  return this.mixinSuper(arguments);
} else {
  // use n-way Polymer binding
  var observer = this.bindProperty(property, observable, oneTime);
  // NOTE: reflecting binding information is typically required only for
  // tooling. It has a performance cost so it's opt-in in Node.bind.
  if (Platform.enableBindingsReflection && observer) {
    observer.path = observable.path_;
    this._recordBinding(property, observer);
  }
  if (this.reflect[property]) {
    this.reflectPropertyToAttribute(property);
  }
  return observer;
}

所以,你可以使用bindProperty,但除非你能确保你想要绑定的属性的存在,否则我不会推荐它。