나는 ng-table을 가지고 있습니다. 하나의 컨트롤러 안에 여러 개의 ng 테이블이 있습니다. ng-table = "tableParams2"또는 ng-table = "tableParams3" 등의 동적 속성을 제공하고 있습니다. 버튼 클릭 기능에 대한 AJAX 요청을 작성하여 데이터를 업데이트합니다. 내 http 요청이 백엔드에서 전송됩니다. 3 ~ 4 번 클릭하면 콘솔에 표가 다시로드됩니다. 데이터 이후에는 데이터가 일정하게 유지되고 표에 다시로드 된 콘텐츠가 표시되지 않습니다. 나는 새 데이터로 테이블을 다시로드 할 모든 클릭에angularJs ng-table을 다시로드하는 방법
<button ng-click="qualifyX(2)" ></button>
<div class="dragable modal hide fade ui-draggable in" id="ptn_popup" aria-hidden="false" data-backdrop="false">
<div class="modal-header">
<a class="close" data-dismiss="modal" data-original-title="" title="">×</a>
<h4>Possible matched Companies</h4>
</div>
<div class="modal-body" style="padding: 10px;">
<div id="ptn_qualify_res" class="grid-view">
<div class="summary"></div>
<table ng-table="tableParams2" show-filter="true" class="items table table-striped table-bordered table-condensed">
<tr ng-repeat="business in $data">
<td data-title="'Primary Trading Name'" sortable="'primary_trading_name'" filter="{ 'primary_trading_name': 'text' }">
{{business.primary_trading_name}}
</td>
<td data-title="'Primary Entity Name'" sortable="'primary_entity_name'" filter="{ 'primary_entity_name': 'text' }">
{{business.primary_entity_name}}
</td>
<td data-title="'Business Name(s)'" sortable="'business_names'" filter="{ 'business_names': 'text' }">
{{business.business_names}}
</td>
<td data-title="'Other Trading Name(s)'" sortable="'other_trading_names'" filter="{ 'other_trading_names': 'text' }">
{{business.other_trading_names}}
</td>
<td data-title="'State'" sortable="'state'" filter="{ 'state': 'text' }">
{{business.state}}
</td>
<td style="width:70px;">
<a data-dismiss="modal" href="javascript:void(0)" data={{business.business_id}} class="ptn_qualify_view_link">
<button type="button" class="btn btn-mini"><i class="icon-eye-open"></i> View </button>
</a>
</td>
</tr>
</table>
</div>
</div>
<div class="modal-footer">
<a data-dismiss="modal" class="btn" id="yw11" href="javascript:void(0);" data-original-title="" title="">Close</a>
</div>
</div>
App.js
$scope.qualifyX = function(busID) {
var penModal = $('#popups_container' + busID + ' #pen_popup');
var pen = $('#popups_container' + busID).next().find('input#Custombusiness_primary_entity_name').val();
var selectors = {pen: pen, penModal: penModal};
$http.get(getPtnData + '?ptn=' + selectors.ptn).success(function(data) {
selectors.ptnModal.find('#ptn_qualify_res').removeClass('grid-view-loading').addClass('grid-view');
$scope['tableParams' + busID] = new ngTableParams(
{
page: 1, // show first page
count: data.length, // count per page
sorting:
{
primary_trading_name: 'asc' // initial sorting
}
}, {
total: 0, // length of data
getData: function($defer, params) {
var filteredData = params.filter() ?
$filter('filter')(data, params.filter()) :
data;
var orderedData = params.sorting() ?
$filter('orderBy')(filteredData, params.orderBy()) :
data;
params.total(orderedData.length); // set total for recalc pagination
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
});
};
Plunker 다소 유사하게 만들기 :
HTML : 다음은 내 코드입니다.
요청을 캐싱하는 백엔드가 될 수 있습니까? 나는 전에도 비슷한 동작을 보았으며 IE는 최악의 경우를 보였습니다. 종종 백엔드에 요청을 보내지 않았습니다. – thsorens
내 콘솔에서 요청이 백엔드로 전송되고 응답이 새로운 것을 보았습니다.하지만 내가 볼 때 콘솔에서 더 이상 ** ngTable : 데이터를 다시로드 ** 메시지를 볼 수 없습니다. –
@thsorens : ** $ scope [ 'tableParams'+ [busID] = []; ** line을 추가하여이 문제를 해결했습니다. http__ 함수는 실제로 데이터를 지 웁니다. 이제 문제는 남았습니다. ng-table은 $ data 변수를 사용하므로 하나의 컨트롤러에서 5 개의 테이블을 사용할 때 ** ngTable : 데이터를 다시로드 ** 메시지를 5 번 봅니다. –