聚合物,纸张数据表的行样式

时间:2016-06-20 16:48:46

标签: polymer polymer-1.0 styling

我试图为纸张数据的行着色 使用属性customRowStyle

Plunk of paper-datatable正在运行,行已着色,但未将其作为单独的Polymer元素包含。

我需要在单独的元素中包含paper-datatable。

需要一些帮助来解决这个问题: 如何让customRowStyle(item)在表格渲染上调用并传递item

 <paper-datatable data="{{data}}" 
                         custom-row-style="{{generateRowCss}}"
                         on-row-tap="row_tap">

            <paper-datatable-column header="title" property="title"></paper-datatable-column>
            <paper-datatable-column header="Calories" property="calories"></paper-datatable-column>
            <paper-datatable-column header="Fat (g)" property="fat" ></paper-datatable-column>

</paper-datatable>

...

generateRowCss: function (item) {
                console.log('theming_2 generateRowCss:');
                var levels = ['#FFFFFF', '#FFEBEE', '#FFCDD2', '#EF9A9A'];
                var min = 150;
                var max = 450;
                var level = Math.floor((item.calories - min) / (max - min) * levels.length);
                return 'background:' + levels[level] + ';';
},

编辑:   Plunk使用@ a1626解决方案。

1 个答案:

答案 0 :(得分:2)

传递给generateRowCss的{​​{1}}是函数而不是函数的返回值(这是你的代码传递的函数),你必须做这样的事情。而不是创建函数customRowStyle创建具有相同名称的属性,将其初始化为Object并将其值作为整个函数返回

generateRowCss

上面粘贴的是自定义元素的properties: { data: { type: Array, notify: true, value: [ {id: 0, title: 'Frozen yogurt', calories: 159, fat: 6}, {id: 1, title: 'Ice cream sandwich', calories: 237, fat: 9}, {id: 2, title: 'Eclair', calories: 262, fat: 16}, {id: 3, title: 'Cupcake', calories: 305, fat: 3.7}, ], }, generateRowCss:{ type:Object, //this is optional you can skip this also value:function(){ return function(item){ console.log('app.generateRowCss'); console.log(item); var levels = ['#FFFFFF', '#FFEBEE', '#FFCDD2', '#EF9A9A']; var min = 150; var max = 450; var level = Math.floor((item.calories - min)/(max-min)*levels.length); console.log(level); console.log('background:'+levels[level]+';'); return 'background:'+levels[level]+';'; } } } }, 。这是工作plunkr

相关问题