我不知道是什么问题,但似乎数据表指令正在我的$范围被定义之前被初始化。更重要的是,似乎变量设置了两次。
我有一个userService
从我的服务器检索列定义和数据。 getUserList()
方法返回一个承诺。我使用then()方法来设置将由datatables指令使用的$ scope变量。看起来指令在请求完成之前请求变量。此外,似乎变量设置了两次,因为在Chrome的开发控制台中,我看到“测试”日志两次。
如果我使用静态数据(不是来自服务器)并将$ scope变量放在getUserList()
之外,那么它可以正常工作。
$scope.indexList = function() {
userService.getUserList().then(function (data) {
$scope.dtOptions = DTOptionsBuilder.fromFnPromise(function() {
console.log("test");
var deferred = $q.defer();
deferred.resolve(data.Data);
return deferred.promise;
});
$scope.dtColumns = [];
angular.forEach(data.DataTablesColumns, function (i, v) {
$scope.dtColumns.push(DTColumnBuilder.newColumn(i.Id)
.withTitle(i.DisplayName)
.renderWith(actionsHtml));
});
});
}
这是我如何设置数据表指令:
<div ng-init="indexList()">
<table datatable="" dt-options="dtOptions" dt-columns="dtColumns"class="row-border hover"></table>
</div>
我可以在不修改指令的情况下做类似的事吗? – DDiVita
我没有看到另一种方式......也许某种延迟的指令初始化,但我不知道这是否可能。 –