Polymer 0.5.5:core-list中的条件模板和/或模板动态引用

时间:2015-04-09 15:55:58

标签: javascript polymer

我有一个聚合物0.5.5核心列表,显示来自AJAX调用的一些项目。在核心列表中,如果我有一个模板,它可以正常工作并按预期显示我的项目。我想做的是重用相同的核心列表来显示不同项目的列表,这些项目应绑定到不同的模板。我无法为我的生活做到这一点。

我尝试过使用if属性的两个模板使用反向条件(if="{{model.attribute}}"if="{{!model.attribute}}"),但这两个条件似乎总是评估为false。

我尝试过带有ref属性的模板,该属性是通过条件(ref="{{model.attribute?'template1':'template2'}}")或通过我的元素(ref="{{mode}}")中的变量计算的,我在再次调用AJAX请求之前进行了更改。 / p>

这一切都无效。在最好的情况下,仅使用第一个模板。在其他情况下,什么也没出现。在其他代码组合上,情况更糟:我“似乎”得到正确的初始模板,但有些东西不起作用,好像只传递了部分模型对象。我有一个数据过滤器,在一些奇怪的情况下,显示的数据应该是。

我有一种下沉的感觉,这种类型的动态模板与核心列表不相符。有人取得了这样的效果吗?基本上我只想要一个可以显示两种类型的项目和交换机模板的列表。由于切换是以编程方式完成的,如果需要,我可以在代码中执行操作,但我不确定我可以通过这种方式更改模板。

谢谢!

1 个答案:

答案 0 :(得分:1)

这对我有用:

<div vertical layout fit style="overflow:auto;">
<h1>asd</h1>
<core-list data="{{ list_data }}" id="core_list_ps">
    <template>
        <div class="item">
         <!--  NOTE!
         All list data, as custom elements, must go inside the 'item' here. -->
        <template if="{{model.list1}}">
                  <my-list1
                          id="list1_id"
                          route="{{route}}"
                          list1_data='{{model}}'
                   ></my-list1>
         </template>   
         <template if="{{model.list2}}">
                  <my-list2
                          id="list2_id"
                          route="{{route}}"
                          list2_data='{{model}}'
                   ></my-list2>
         </template>   
         </div>
    </template>
</core-list> 

因此,根据将数据传递给核心列表模型,使用不同的自定义元素来渲染元素。

flatiron-director也用于根据路线过滤数据(list1 / list2)。