Polymer 1.x:如何预处理列表或转发器中的项目?
Polymer 1.x: How to pre-process the items in a list or repeater?
例如,谁能指出一种格式化(或预处理)进入转发器(如 iron-list
或 iron-data-table
)的数据项的模式?
换句话说,consider this plunk for example。假设我想为每个用户添加一个字段并将其显示在列表中;我们称它为 namelength
其中:
item.user.namelength = item.user.name.first.length + item.user.name.last.length
我如何(在 HTML 或 JS 中的哪个位置以及使用什么模式)最好地处理此预处理任务?
内容-el.html
<base href="https://polygit.org/polymer+:master/iron-data-table+Saulis+:master/components/">
<link rel="import" href="polymer/polymer.html">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="iron-ajax/iron-ajax.html">
<link rel="import" href="paper-button/paper-button.html">
<link rel="import" href="iron-data-table/iron-data-table.html">
<dom-module id="content-el">
<template>
<style></style>
<iron-ajax
auto
url="https://saulis.github.io/iron-data-table/demo/users.json"
last-response="{{users}}">
</iron-ajax>
<iron-data-table items="[[users.results]]">
<data-table-column name="Picture" width="50px" flex="0">
<template>
<img src="[[item.user.picture.thumbnail]]">
</template>
</data-table-column>
<data-table-column name="First Name">
<template>[[item.user.name.first]]</template>
</data-table-column>
<data-table-column name="Last Name">
<template>[[item.user.name.last]]</template>
</data-table-column>
<data-table-column name="Email">
<template>[[item.user.email]]</template>
</data-table-column>
</iron-data-table>
</template>
<script>
(function() {
'use strict';
Polymer({
is: 'content-el',
});
})();
</script>
</dom-module>
w=14=WILL.y。 w=12=st
w=10=sh
w=14=sh...w=12=sh
w=11=sh
您可以使用 computed binding 通过添加您描述的 namelength
字段来预处理 user.results
:
// template
<iron-data-table items="[[_getUserData(users.results)]]">
...
<data-table-column name="Name Length">
<template>[[item.user.namelength]]</template>
</data-table-column>
</iron-data-table>
// script
Polymer({
is: 'content-el',
_getUserData: function(items) {
items.forEach(function(item) {
var user = item.user;
user.namelength = user.name.first.length + user.name.last.length;
});
return items;
}
});
例如,谁能指出一种格式化(或预处理)进入转发器(如 iron-list
或 iron-data-table
)的数据项的模式?
换句话说,consider this plunk for example。假设我想为每个用户添加一个字段并将其显示在列表中;我们称它为 namelength
其中:
item.user.namelength = item.user.name.first.length + item.user.name.last.length
我如何(在 HTML 或 JS 中的哪个位置以及使用什么模式)最好地处理此预处理任务?
内容-el.html<base href="https://polygit.org/polymer+:master/iron-data-table+Saulis+:master/components/">
<link rel="import" href="polymer/polymer.html">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="iron-ajax/iron-ajax.html">
<link rel="import" href="paper-button/paper-button.html">
<link rel="import" href="iron-data-table/iron-data-table.html">
<dom-module id="content-el">
<template>
<style></style>
<iron-ajax
auto
url="https://saulis.github.io/iron-data-table/demo/users.json"
last-response="{{users}}">
</iron-ajax>
<iron-data-table items="[[users.results]]">
<data-table-column name="Picture" width="50px" flex="0">
<template>
<img src="[[item.user.picture.thumbnail]]">
</template>
</data-table-column>
<data-table-column name="First Name">
<template>[[item.user.name.first]]</template>
</data-table-column>
<data-table-column name="Last Name">
<template>[[item.user.name.last]]</template>
</data-table-column>
<data-table-column name="Email">
<template>[[item.user.email]]</template>
</data-table-column>
</iron-data-table>
</template>
<script>
(function() {
'use strict';
Polymer({
is: 'content-el',
});
})();
</script>
</dom-module>
您可以使用 computed binding 通过添加您描述的 namelength
字段来预处理 user.results
:
// template
<iron-data-table items="[[_getUserData(users.results)]]">
...
<data-table-column name="Name Length">
<template>[[item.user.namelength]]</template>
</data-table-column>
</iron-data-table>
// script
Polymer({
is: 'content-el',
_getUserData: function(items) {
items.forEach(function(item) {
var user = item.user;
user.namelength = user.name.first.length + user.name.last.length;
});
return items;
}
});