हाय Almaron (उर्फ Malkav) मैं आईआरसी से wafflejock हूँ यहाँ के रूप में सबसे अच्छा काम करने की बात है मैं समझ सकता है:
http://plnkr.co/edit/TUOYmM?p=preview
var app = angular.module('main', ['ngTable']).
controller('DemoCtrl', function($scope, ngTableParams, NameService) {
var data = NameService.data;
$scope.tableParams = new ngTableParams(
{
page: 1, // show first page
count: 10, // count per page
sorting: {name:'asc'}
},
{
total: 0, // length of data
getData: function($defer, params) {
NameService.getData($defer,params,$scope.filter);
}
});
$scope.$watch("filter.$", function() {
$scope.tableParams.reload();
});
});
app.service("NameService", function($http, $filter){
function filterData(data, filter){
return $filter('filter')(data, filter)
}
function orderData(data, params){
return params.sorting() ? $filter('orderBy')(data, params.orderBy()) : filteredData;
}
function sliceData(data, params){
return data.slice((params.page() - 1) * params.count(), params.page() * params.count())
}
function transformData(data,filter,params){
return sliceData(orderData(filterData(data,filter), params), params);
}
var service = {
cachedData:[],
getData:function($defer, params, filter){
if(service.cachedData.length>0){
console.log("using cached data")
var filteredData = filterData(service.cachedData,filter);
var transformedData = sliceData(orderData(filteredData,params),params);
params.total(filteredData.length)
$defer.resolve(transformedData);
}
else{
console.log("fetching data")
$http.get("http://www.json-generator.com/api/json/get/bUAZFEHxCG").success(function(resp)
{
angular.copy(resp,service.cachedData)
params.total(resp.length)
var filteredData = $filter('filter')(resp, filter);
var transformedData = transformData(resp,filter,params)
$defer.resolve(transformedData);
});
}
}
};
return service;
});
असल में मैं सेटअप में कुछ कार्यों उन करने के लिए इसे पढ़ने के लिए थोड़ा आसान बनाने के लिए लंबी लाइनें और उसके बाद एक कैश्डडेटा ऑब्जेक्ट सेट करें जिसे मैं यह देखने के लिए जांचता हूं कि यह कॉल करने से पहले पॉप्युलेट किया गया है ... ऐसा लगता है कि यह अभी भी शुरुआत में दो कॉल बहुत जल्दी बनाता है मुझे यकीन है कि आप कर सकते हैं डेटा को पहले से लोड किया जा रहा है या नहीं, यह जांचने के लिए ध्वज का उपयोग करके इसे से बचें और यदि ऐसा है तो बस कॉल को फिर से चालू करने के बजाय प्रतीक्षा करें, लेकिन यह सुनिश्चित नहीं है कि यह एक है बड़ा सौदा।
बहुत बहुत धन्यवाद। मेरा मानना है कि दूसरी कॉल फ़िल्टर पर $ घड़ी से आता है। मेरे पास एकमात्र प्रश्न यह है कि डेटा नाम 'नेमस्काइम डेटा' से क्यों लोड किया गया है जब ऐसी कोई चीज़ नहीं है? – Almaron