2015-06-06 6 views
8

Ich habe eine Liste von Elementen, in denen jedes Element einen .content HTML-Wert wie folgt hat.Polymer 1.0 - So binden Sie HTML-Wert

<template is="dom-repeat" items="{{entries}}"> 
    <li><p class="paper-font-body2">{{item.title}}</p> 
     <div>{{item.content}}</div></li> 
    </template> 

Inhaltsfeld ist so etwas wie dieses

Hello <strong>Polymer</strong> 

Es Browser als Klartext zeigt. Wie zeige ich es als sicheres HTML an?

EDIT: Dieses Problem ist raised, aber es hilft mir nicht.

+0

Mögliches Duplikat von [Wie man HTML in eine Schablone mit Polymer injiziert] (http://stackoverflow.com/questions/22199662/how-to-inject-html-into-a-template-with-polymer) –

Antwort

6

Man könnte so etwas wie dies versuchen:

<dom-module id="echo-html"> 

    <template> 
    <span>{{html}}</span> 
    </template> 

    <script> 
    Polymer({ 
     is: 'echo-html', 
     properties: { 
      html: { 
       type: String, 
       value: 'html' 
      } 
     }, 
     ready: function() { 
      this.innerHTML = this.html; 
     } 
    }); 
    </script> 

</dom-module> 

und es so nenne ich denke:

<div><echo-html html="{{item.content}}"></echo-html></div> 
+0

Sehr elegant. Nicht sicher, warum this.innerHTML, das ist, was für mich in einer ähnlichen Situation gearbeitet: Polymer ({ ist: 'ir-Galerie-Echo-html', Eigenschaften: { html: { Typ: String, Wert: 'html', \t \t \t Beobachter: 'htmlChanged' } }, htmlChanged:.. function() { \t \t diese $ content.innerHTML = this.html; //this.innerHTML = this .html; } }); –

16

Sie könnte leicht tun:

<template is="dom-repeat" items="{{entries}}"> 
    <li><p class="paper-font-body2">{{item.title}}</p> 
     <div inner-h-t-m-l="{{item.content}}"></div></li> 
    </template> 

Das ist, was ich bin unter Berücksichtigung, dass die XSS-Schwachstelle offen ist.