【问题标题】:Polymer binding data to element loaded with innerHTMLPolymer 将数据绑定到使用 innerHTML 加载的元素
【发布时间】:2014-12-05 13:25:54
【问题描述】:

我正在为一个项目使用Polymer。我有通过this.innerHTML 加载的html 元素。我想将这些元素中的数据绑定到主页。我不知道这是否可能。这是设置:我有一个主应用程序将元素绑定到我的<html-echo> 元素的html 属性。然后,此元素应使用 .innerHTML 加载 html(否则不会解析 html)。从那个被注入的元素中,我想绑定它的数据。这可能吗?

主应用

<polymer-element name="main-app">
    <template>
        <html-echo html="{{htmlToBeEchoed}}"></html-echo>
    </template>
    <script>
        Polymer('main-app', {
            htmlToBeEchoed = "<test data='{{data}}'></test>";
        });
    </script>
</polymer-element>

html-echo.html

<polymer-element name="html-echo" attributes="html data">
    <script>
        Polymer('html-echo', {
          htmlChanged: function() {
            // WARNING: potential XSS vulnerability if `html` comes from an untrusted source :()
            this.innerHTML = this.html;
          }
        });
    </script>
</polymer-element>

test.html

<polymer-element name="test" attributes="data">
    <script>
        Polymer('test', {
            data: 5
        });
    </script>
</polymer-element>

【问题讨论】:

    标签: javascript data-binding polymer


    【解决方案1】:

    是的,使用injectBoundHTML。来自https://github.com/Polymer/docs/issues/607

    /**
    * 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)
    

    在聚合物元素中,而不是

    el.innerHTML = html;

    this.injectBoundHTML(html, el);

    【讨论】:

    • Polymer 1.0 是否有等价物?
    • 我在 Polymer 1.0 中也需要这个。如果它不可用,这将是一个巨大的问题。通过 innerHTML 进行设置是现代 Web 开发人员无法摆脱的!
    • @Clay 我参加聚会有点晚了,但也许您可以在元素上设置 inner-h-t-m-l 属性?
    • @Bram 绝对精彩!从没想过这是一个选择。完美运行。这应该作为正确的答案发布并投票。我只是碰巧深入挖掘并找到了您的评论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多