我有两个要素。第一个(主机)在变量(称为渲染器)中包含一个数组,用作子元素的html属性(通过使用聚合物数据绑定)
<my-datatable id="datatable" datas="https://myawesomeurl.com/datasource.php" target-table="manualTable" renderers={{renderers}}>
并在js:
renderers: {
type: Array,
reflectToAttribute: true
}
},
attached: function () {
this.$.datatable.renderDatatable();
this.renderers = [
{
"render": function( data, type, row ) {
return data +' ('+ row[3]+')';
},
"targets": 0
}
]
}
在子元素中,声明了该属性
Polymer({
is: 'my-datatable',
properties: {
datas: {
type: String
},
targetTable: {
type: String
},
renderers: {
type: Array,
value: []
}
},
renderDatatable: function () {
console.log(this.targetTable);
console.log("render ", this.renderers);
var table = jQuery(Polymer.dom(this).getOwnerRoot().host.$[this.targetTable]).DataTable({
"colReorder": true,
"paging": false,
"info": false,
"processing": true,
"serverSide": true,
"ajax": this.datas,
"columnDefs": this.renderers,
dom: 'Blfrtip',
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print'
]
});
但是在this.renderers
的控制台日志中,它始终是空的。我不明白。任何线索?
(如果你想知道,我试图制作一个jquery数据表元素,它将列渲染器作为输入)
答案 0 :(得分:0)
你可以试试这个:
<my-datatable id="datatable" datas="https://myawesomeurl.com/datasource.php" target-table="manualTable" renderers$="{{renderers}}">
绑定属性值时,它应该有$
符号。