Open depeele opened 8 years ago
First, var b = Bitems[bdex];
should be var b = $scope.Bitems[bdex]
Secondly, seems like there's some issue with the dom-repeat
/ iron-list
element. The bdex
variable is not propagated correctly to the underlying column <template>
. You can see that by simply adding a [[bdex]]
variable inside the cell template – nothing shows except on the first row.
As a workaround, you can bind properties to <data-table-column>
and use them inside the template:
<template is="dom-repeat" items="{{Bitems}}" as="bItem" index-as="bdex">
<data-table-column bdex="[[bdex]]" bitem="[[bItem]]">
<template is="header">{{bitem.name}}</template>
<template>
<div class='A-card'>{{getItem(column.bdex, index)}}</div>
</template>
</data-table-column>
</template>
My bad with the var b = $scope.Bitems[bdex]
Thanks for the work-around!
When I first noticed the issued, I did see only the first row being properly filled.
With a minor change it appears that only the non-header template seems to be losing bindings (although it's also the only one actually being repeated):
<template is="dom-repeat" items="{{Bitems}}" as="bItem" index-as="bdex">
<data-table-column zdex="[[bdex]]">
<template is="header">[[bItem.name]] : [[bdex]]</template>
<template>
<div class='A-card'>[[getItem(column.zdex, index)]] : [[bdex]]</div>
</template>
</data-table-column>
</template>
Results in:
th | B1 : 0 | B2 : 1 | B3 : 2 | B4 : 3 |
---|---|---|---|---|
A1 | AB1,1 : 0 | AB2,1 : 1 | AB3,1 : 2 | AB4,1 : 3 |
A2 | AB1,2 : | AB2,2 : | AB3,2 : | AB4,2 : |
A3 | AB1,3 : | AB2,3 : | AB3,3 : | AB4,3 : |
A4 | AB1,4 : | AB2,4 : | AB3,4 : | AB4,4 : |
Hi Saulis, First of all, contrats for the iron-data-table, it's awesome!!!
About this problem, do you know how to solve it? Thanks
Hi!
Right now I don't 😄 And I'm not sure if I'll have enough time to really look into unfortunately... Also, Polymer 2.0 is coming that might sort this problem – needs to be tested at some point.
Feel free to give me a hand if you can 😄
Hi Saulis,
I created a PR to make column index avaiable, so it's possible to know what data I need to use in beforeCellBind
(row x column). Another thing I did was make possible to set the column object during dom-repeat
, this way we can have the row and column object in all beforeCellBind
.
Thanks
Hi Saulis,
Did you get a chance to look into Andrew's PR? If it is good, are you planning to push it to master anytime soon?
Hi @prajapatin sorry for the delay, the PR looks ok otherwise, but I need some more info about the use case for columnItem
Hey Guys, just wanted to update here that dynamic columns works with latest code with following approach. I have even more dynamic scenario where column content control (checkbox, dropdown etc.) depends on certain configuration.
<iron-data-table page-size="10" selection-enabled multi-selection="true" items="{{data.dataItems}}">
<template is="dom-repeat" items="[[data.tabular.columns]]" as="col" index-as="colIndex">
<template is="dom-if" if="[[_isCheckBox(col)]]">
<data-table-column name="[[col.header]]" column-index="{{colIndex}}">
<template>
<paper-checkbox checked$="{{_columnValue(item, column.columnIndex)}}"></paper-checkbox>
</template>
</data-table-column>
</template>
<template is="dom-if" if="[[_isTextArea(col)]]">
<data-table-column name="[[col.header]]" column-index="{{colIndex}}">
<template>
<paper-textarea value="{{_columnValue(item, column.columnIndex)}}"></paper-textarea>
</template>
</data-table-column>
</template>
.
.
. etc.
</template>
</iron-data-table>
Issue #10 (Any plans to support dynamic columns?) was resolved very quickly via PR #13 back in March 2016.
I'm just diving back in to make use of
iron-data-table
only to find that dynamic columns are no longer working.The following, which worked properly with the (now deleted)
feature/dynamic-columns
branch and after PR #13 was pulled into master, no longer works properly. The header and first column render as expected, but the dynamic content of the non-header columns are no longer rendered at all: