聚合物0.5.5:核心列表中的条件模板和/或模板动态参考

Polymer 0.5.5: conditional template and/or template dynamic reference inside core-list

本文关键字:动态 参考 核心 列表 聚合物 条件      更新时间:2023-09-26

我有一个聚合物0.5.5核心列表,其中显示了AJAX调用中的一些项目。在核心列表中,如果我有一个模板,它会很好地工作,并按预期显示我的项目。不过,我想做的是重用相同的核心列表来显示不同项目的列表,这些项目应该绑定到不同的模板。我一辈子都做不到。

我尝试过使用两个具有if属性的模板,它们使用相反的条件(if="{{model.attribute}}"if="{{!model.attribute}}"),但这两个条件似乎总是计算为false。

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

这些都不管用。在最好的情况下,只使用第一个模板。在其他情况下,不会显示任何内容。在其他代码组合中,情况更糟:我"似乎"得到了正确的初始模板,但有些东西不起作用,好像只传递了一个部分模型对象。我有一个数据过滤器,在一些奇怪的情况下,显示的数据应该更少。

我有一种下沉的感觉,这种类型的动态模板不能很好地处理核心列表。有人达到这种效果吗?基本上,我只想要一个列表,可以显示两种类型的项目并相应地切换模板。由于切换是以编程方式完成的,如果需要的话,我可以在代码中做一些事情,但我不确定我可以用这种方式在模板中更改什么。

谢谢!

这对我有效:

<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> 

因此,基于哪些数据被传递到核心列表模型,不同的自定义元素被用于呈现元素。

此外,熨斗导向器用于根据路由过滤数据(list1/list2)。