問題が何であるかはわかりませんが、 $scope が定義される前に datatables ディレクティブが初期化されているようです。さらに、変数が 2 回設定されているようです。
userService
サーバーから列の定義とデータを取得する があります。getUserList()
メソッドは promise を返します。then() メソッドを使用して、datatables ディレクティブで使用される $scope 変数を設定します。リクエストが完了する前に、ディレクティブが変数をリクエストしているようです。また、Chrome の開発コンソールに「テスト」ログが 2 回表示されるため、変数が 2 回設定されているようです。
(サーバーからではなく) 静的データを使用し、 $scope 変数をgetUserList()
promise の外に配置すると、正常に動作します。
$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));
});
});
}
これは、datatables ディレクティブを設定する方法です。
<div ng-init="indexList()">
<table datatable="" dt-options="dtOptions" dt-columns="dtColumns"class="row-border hover"></table>
</div>