anglejsとangular-ui-bootstrapを使用して、APIから取得したいくつかのデータとテーブルを作成しています。AngularJS - ChromeとMozillaでDOMが更新されない
私のサービスが正しいデータを受け取り、リクエストが正しく構築されていることを確認しました。私のpageChange関数が適切に起動され、最初のページが正常に読み込まれます。
だから私は、次のコントローラの設定があります。
(function() {
'use strict';
initContacts.$inject = ['$scope', '$http'];
angular.module('app')
.config(function ($locationProvider) {
$locationProvider.html5Mode(true);
});
angular.module('app', ['ui.bootstrap']).controller('contactSearchController', initContacts);
function initContacts($scope, $http) {
$scope.contacts = [];
$scope.totalItems = 0;
$scope.pages = 0;
$scope.currentPage = 0;
$scope.maxPageLinksShown = 5;
if (window.location.hash !== '') {
$scope.currentPage = window.location.hash.replace('#', '');
}
$http.get("/api/ContactApi/GetPage?pageIndex=" + ($scope.currentPage - 1)).success(function (data) {
$scope.contacts = data.Contacts;
$scope.totalItems = data.Count;
$scope.PageSize = data.Contacts.length;
$scope.pages = Math.ceil((data.Count/$scope.PageSize));
});
$scope.pageChanged = function() {
$http.get("/api/ContactApi/GetPage?pageIndex=" + ($scope.currentPage - 1))
.success(function (data) {
$scope.contacts = data.Contacts;
});
};
}
}
})();
をそして、私の見解では私が持っている:
<div ng-app="app" ng-controller="contactSearchController">
<table class="table table-striped table-hover contact-search-table">
<thead>
<tr>
<td class="contact-title">
Titel
</td>
<td class="department">
Afdeling
</td>
<td class="name">
Navn
</td>
<td class="work-phone">
Telefon
</td>
<td class="mobile">
Mobile
</td>
<td class="email">
Email
</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="(key, value) in contacts">
<td class="contact-title">{{value.Title}}</td>
<td class="department">{{value.Department}}</td>
<td class="name">{{value.FullName}}</td>
<td class="work-phone">{{value.WorkPhone}}</td>
<td class="mobile">{{value.WorkMobile}}</td>
<td class="email">{{value.Email}}</td>
</tr>
</tbody>
</table>
<div class="col-xs-12 pager-container">
<ul uib-pagination total-items="totalItems" ng-model="currentPage" ng-change="pageChanged()" max-size="maxPageLinksShown" class="pagination-sm" boundary-links="true" num-pages="pages"></ul>
</div>
さて、これはある程度機能します。
私の問題
ページリンクをクリックし、pageChanged()関数が呼び出されると、私は、私は私のAPIからデータを取得し、それがすべて正しいだときは、スコープ内のリストには、罰金更新しているように見えます私の見解の表は変わらない。
このソリューションはIEでのみ有効です。 (だれが考えていただろう...)
例外はスローされません。
私はこれが昨日働いていることを誓います。
ご協力いただきありがとうございます。
EDIT私が試した何
:私はすでに「$ダイジェストを得た
$scope.pageChanged = function() {
$http.get("/api/ContactApi/GetPage?pageIndex=" + ($scope.currentPage - 1))
.success(function (data) {
$scope.$apply(function() { // apply
$scope.contacts = data.Contacts;
});
});
};
を:
はそうのように適用されます$の連絡先の割り当てを-Putting進捗状況のエラーが表示されます。
はそうのようなタイムアウトに適用ラップしてみました:
$タイムアウト(関数(){//ここで任意のコードが自動的に適用され、その後の実行を持っています});
DOMはまだ更新されません。
私はこれを試して、このエラー "$ digest already in progress"を取得しました。それを質問に追加する。 –
$ timeout: $ timeout(function(){ //これ以降のコードは自動的に適用されます) }); 既に進行中のダイジェストについての良いトピックを見るhttp://stackoverflow.com/questions/12729122/angularjs-prevent-error-digest-already-in-progress-when-calling-scope-apply –
私もそれを試しました。エラーを取り除きますが、私のDOMはまだ更新されません。 –