이렇게하려면 parseDeclaration
메서드를 재정의해야합니다. 이 메소드는 바인딩 될 필요가있는 html을 파싱/생성하는 역할을합니다. 예를 들어,
<polymer-element name="data-ul" extends="ul" attributes="items">
<template>
<template repeat="{{item in items}}" ref="itemTemplate"></template> <!-- this is the replacement of content tag -->
</template>
<script type="application/dart" src="data-ul.dart"></script>
</polymer-element>
을 다음 템플릿을 또는 가정 해 봅시다 당신은 몇 가지 기본 요소를 갖고 싶어 :
@CustomTag('data-ul')
class DataUl extends LiElement with Polymer, Observable {
DataUl.created() : super.created();
@published List items;
void parseDeclaration(Element elementElement) {
// We need to remove previous template from element.templateContent
// in that way it no continues adding a new content every time that we instantiate
// this component.
var previousTemplate = element.templateContent.querySelector('template#item');
if(previousTemplate != null)
previousTemplate.remove();
var t = this.querySelector('#itemTemplate'); // Gets the template with id itemTemplate from the content html
if(t != null) // if not null
element.templateContent.append(t); // append itemTemplate to element.templateContent
else
element.templateContent.append(new TemplateElement()..id='itemTemplate'); //if no template is added append an empty template to avoid errors
super.parseDeclaration(elementElement); // call super
}
}
그리고 마지막으로 :
<polymer-element name="data-ul" extends="ul" attributes="items">
<template>
<template repeat="{{item in items}}">
<!-- Def elements -->
<template bind="{{item}}" ref="itemTemplate"></template> <!-- this is the replacement of content tag -->
<!-- Def elements -->
</template>
</template>
<script type="application/dart" src="data-ul.dart"></script>
</polymer-element>
은 다음 다음 수업을해야을 다음과 같이 맞춤 요소를 사용하십시오.
<ul is="data-ul" items="{{[{'first_name': 'jay'}, {'first_name': 'joy'}]}}">
<template id="itemTemplate">
<li>{{item['first_name']}}</li>
</template>
</ul>
당신이 다른 접근 방식을 통해 내가 얻은 것과 똑같은 것을 얻고 자하는 인상을 가지십시오. 질문 [런타임시 템플릿 내용 변경] (http://stackoverflow.com/questions/20688760/change-template-content-at-runtime)을 참조하십시오. 나는 성공도하지 않고 당신의 시도를 시도했다. –