Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to reload angularJs ng-table

Tags:

I have an ng-table. I have multiple ng-tables inside one controller. I am giving dynamic attributes i.e. ng-table="tableParams2" or ng-table="tableParams3" etc. to them. I am making an ajax request on button click function to update the data. My http request is being sent at backend. By after I click 3-4 times, I see in console my table is reloaded. By after data, my data remains constant, I don't see the reloaded content in table. Below is my code:

Html:

<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 &nbsp;</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()));             }         });      }); }; 

Create a somewhat similar Plunker, on every click I want to reload the table with new data.

like image 687
Vishal Khode Avatar asked Apr 22 '14 19:04

Vishal Khode


People also ask

How to reload in AngularJS?

Reload Page Using location.reload() in AngularJSreload() method is when a user clicks the refresh button or presses F5 on their keyboard. It reloads the current page and clears any cookies set in the previous request to this server. It also causes all images, stylesheets, scripts, and other files to be reloaded.

How to reload a div in AngularJS?

Angularjs provides wrapper of setInterval() with $interval angular service module. To refresh a DIV or any element in specified time, i am going to use $interval service. This service works in same way as setInterval() but it gives more control such as promise callback by which we can cancel out the timer.


1 Answers

I was having a very similar problem where my table was rendering but not reloading upon an action. What you need to do is to reload $scope.tableParams every time your button is clicked. A simple way to do this is to wrap $scope.tableParams.reload() in a function, and then call that function when the button is clicked.

controller code:

$scope.doSearch = function () {     $scope.tableParams.reload(); } 

html code:

<button ng-click="doSearch()">Search</button> 
like image 62
Daniel F Avatar answered Oct 02 '22 04:10

Daniel F