テーブルを作成し、http を使用してテーブルにデータをロードしています。そのため、クリックするたびにテーブル データが変更されますが、更新されたデータがテーブルに表示されません。参照用にサンプルのプランカーを作成しました。私のプロジェクトでは、[新しいデータの再読み込み] をクリックすると、テーブルのデータが変更されますが、2 ~ 3 回クリックしても変更されません。誰でも知っている、それを修正する方法..
6 に答える
ngTable ディレクティブの問題です。変更時のみ更新しdata.length
ます。このプランクを見てください。$scope['tableParams1'] を null に設定し、内部で$timeout
新しいデータを設定します。これにより、angularJs に新しいサイクルが強制されます。したがって、最初のサイクルで ngTable は data.length が 0 に変更されたことを確認し、新しいサイクルで ngTable は data.length が再び変更されたことを確認します。$timeout を使用しない場合、ngTable は data.length が以前と同じままであることを認識し、何もしません。
提供されたメソッドを直接使用できます$scope.tableParams.reload();
この問題を解決するにはng-controller="yourController"
、ページで を 1 回だけ設定していることを確認してください。
以下のコードはデータを更新しません:
<div ng-controller="yourController">
<table ng-table = "tableParams" ng-controller = "yourController">
</table>
</div>
ng-controller
HTML ページの余分なものを削除して、問題を解決します。
<div ng-controller="yourController">
<table ng-table = "tableParams">
</table>
</div>
私は動的データを含むngテーブルにも取り組んでいました(追加/削除)、
ajax呼び出しを使用してデータベースに変更を加えていましたが、success: function() {}
プロパティは変更を加えましたtableParams
が、更新しない限り変更はページに表示されませんでした実際には実行されないことがconsole.log()
わかりましたが、常に
実行される別の関数があり
ます。呼び出しが成功した後にのみ機能するはずのコードを配置するのは論理的に間違っていることはわかっていますが、関数がそうでない場合特に、変更がデータベースに対して常に正常に行われることを知っていると
、成功の呼び出しが Web サイトの他のページでは機能するが、他のページでは機能しないため、奇妙です。
編集:success: function() {}
complete: function() {}
complete: function() {}
success:
さて、上記の「データ内のテキストの編集」でデータの長さが変わらない場合、この修正でも問題は解決しませんが、イライラします...
$.ajax({
type: "POST",
url: /*some url*/,
data: JSON.stringify({ /*some variable*/ }
}),
contentType: "application/json; charset=utf-8",
dataType: "Json",
success: function () { // would never execute even if it's a successful call
console.log("success");
},
error: function() { // optional, personally didn't try it
console.log("error");
}
complete: function () { //always executes regardless of the result
console.log("complete");
}
});