将标记分配给包含属性数据绑定的innerHTML时,聚合物数据绑定不起作用

use*_*max 7 data-binding 2-way-object-databinding polymer

在使用innerHTML时,在Polymer中创建数据绑定到属性的最简单方法是什么?

这是我的意思的一个例子 - http://jsfiddle.net/ry6og1q9/2/

<paper-input inputValue="{{foo}}" label="static foo"></paper-input>
Run Code Online (Sandbox Code Playgroud)

"staticFoo"paper-input是与{{foo}}绑定的数据 - 双向数据绑定.

var c = this.$.dynamicFooPlaceHolder;
c.innerHTML = '';
var e = document.createElement('div');
e.innerHTML = '<paper-input id="dynamicFoo" inputValue="{{foo}}" label="dynamic foo"></paper-input>';
c.appendChild(e);
Run Code Online (Sandbox Code Playgroud)

但是,使用innerHTML创建的"dynamicFoo"并没有以任何方式绑定到foo属性,尽管它的标记存在.

我试图用Node.bind() - http://www.polymer-project.org/docs/polymer/node_bind.html完成这个, 但它只绑定一种方式.

必须有一个平台实用程序来进行解析/绑定,但我无法在任何地方找到它.

Sco*_*les 7

所有Polymer元素(对于最新版本)都具有此实用方法:

/**
 * Inject HTML which contains markup bound to this element into
 * a target element (replacing target element content).
 * @param String html to inject
 * @param Element target element
 */
injectBoundHTML: function(html, element)
Run Code Online (Sandbox Code Playgroud)

所以你应该能够做到这样的事情:

this.injectBoundHTML('<paper-input id="dynamicFoo" inputValue="{{foo}}" label="dynamic foo"></paper-input>', 
  this.$.dynamicFooPlaceHolder);
Run Code Online (Sandbox Code Playgroud)

  • 似乎Polymer 1.0没有这个实用程序...有没有其他选择? (5认同)