javascript - 动态填充 Angularjs 数据表
问题描述
我正在使用 angularjs 使用动态选项卡视图,这里的选项卡是根据数据库中的记录填充的,并且使用以下代码可以正常工作。
<tabset>
<tab ng-repeat="workspace in workspaces" select="getContent(workspace.id)" data-id="{{workspace.id}}" heading="{{workspace.name}}" active=workspace.active>
<div ng-init="workspace=workspace">
<div ng-bind-html="workspace.content.outerHTML"></div>
</div>
</tab>
</tabset>
但就我而言,对于所有选项卡内容,我想填充 angularjs 数据表。所以我使用以下代码将内容添加到表中。
$scope.workspaces[i].content = $compile(angular.element('<table class="table table-striped table-bordered" datatable dt-instance="dtIntanceCallback" dt-options="dtOptionItem" dt-columns="dtColumnItem" dt-column-defs="dtColumnItemDefs" cellspacing="0" width="100%"></table>'))($scope)[0];
$scope.workspaces[i].active = true;
并尝试应用角度数据表
$scope.dtIntanceCallback = function (instance) {
$scope.dtInstanceItem = instance;
}
$scope.dtInstanceItem = {};
var defaultSorting = true;
$scope.dtOptionItem = DTOptionsBuilder.newOptions().withOption('ajax', function (data, callback, settings) {
if (defaultSorting) {
defaultSorting = false;
var sort_order = 'DESC';
var sort_by = 'product_id';
} else {
var sort_order = data.order[0].dir;
var sort_by = data.columns[data.order[0].column].name;
}
$http.post(path + "/SalesReport/getMarketPlacesItems", {
length: data.length,
start: data.start,
draw: data.draw,
column_name: sort_by,
order: sort_order,
search: data.search.value,
marketplace_id: marketPlaceId
}).then(function (res) {
try {
var obj = JSON.parse(response.data);
if (obj.status == "101") {
restSessionOut.getRstOut();
}
} catch (err) {
}
if (res.data){
callback({
draw: res.data.draw,
recordsTotal: res.data.recordsTotal,
recordsFiltered: res.data.recordsFiltered,
data: res.data.market_place_data
});
}
});
})
.withDataProp('data')
.withOption('processing', true)
.withOption('serverSide', true)
.withOption('createdRow', createdRow)
.withOption('destroy', true)
.withDisplayLength(10)
.withBootstrap()
.withPaginationType('full_numbers');
$scope.dtColumnItem = [
DTColumnBuilder.newColumn('productImage').withTitle("Product Picture").withOption('sName', 'productImage').renderWith(renderProductImage),
DTColumnBuilder.newColumn('asin1').withTitle("ASIN").withOption('sName', 'asin1'),
DTColumnBuilder.newColumn('title').withTitle("Product Name").withOption('sName', 'title'),
DTColumnBuilder.newColumn('seller_sku').withTitle("SKU").withOption('sName', 'seller_sku'),
DTColumnBuilder.newColumn('today_sales').withTitle("Sales Today").withOption('sName', 'today_sales'),
DTColumnBuilder.newColumn('today_sales_net').withTitle("Net Sales Today").withOption('sName', 'today_sales_net'),
DTColumnBuilder.newColumn('today_unit_price').withTitle("Today's Unit Price").withOption('sName', 'today_unit_price'),
DTColumnBuilder.newColumn('yes_sales').withTitle("Yesterday Today").withOption('sName', 'yes_sales'),
DTColumnBuilder.newColumn('yes_sales_net').withTitle("Net Sales Yesterday").withOption('sName', 'yes_sales_net'),
DTColumnBuilder.newColumn('yes_unit_price').withTitle("Yesterday's Unit Price").withOption('sName', 'yes_unit_price'),
];
$scope.dtColumnItemDefs = [
DTColumnDefBuilder.newColumnDef(0).notSortable()
];
function createdRow(row, data, dataIndex) {
$compile(angular.element(row).contents())($scope);
}
function renderProductImage(data, type, full, meta){
return '<img src="asin_img/'+data+'" height="60" width="60">';
}
搜索分页不显示,排序不工作。
解决方案
推荐阅读
- ansible - Ansible 循环中断条件
- node.js - 如何从 mongodb 获取动态创建的模式模型的数据
- python - 根据句子中的文本创建变量名
- java - 使用 Java 在 CalendarDateRangePicker 上启用 XML 属性
- azure-cosmosdb - 是否可以在 Cosmos DB Gremlin API 中执行不区分大小写的搜索?
- algorithm - 通过访问一组节点从源到目的地的最短路径
- sql - T-SQL 根据 ID 将行转置为列
- yocto - 如何在Linux中使用看门狗添加更多原因导致重启的标志?
- java - 如何为匹配纸牌游戏(记忆)制作一个简单的“AI”?
- cross-browser - 亚马逊广告小部件无法在多个浏览器中正确显示