2016-11-08 2 views
0

у меня есть моя первая функция:Как мы можем объединить JSon объект вместе

$scope.loadDataFromToMonth= function (from,to,year) { 
// $scope.loadDataFromToMonthArrivee(from,to,2016); 
    var url = servername+'admin/dashboard/getIncidentDepartByMonthFromTo/'+from+'/'+to+'/'+year; 
// alert(url); 

function onSuccess(response) { 
    console.log("+++++getIncidentDepartByMonthFromTo SUCCESS++++++"); 
    if (response.data.success != false) { 
     $scope.payloadgetIncidentDepartByMonthFromTo = response.data.data; 
     var getIncidentDepartByMonthFromTo= $scope.payloadgetIncidentDepartByMonthFromTo; 
     console.log(JSON.stringify(getIncidentDepartByMonthFromTo)); 
     $scope.data = {}; // new object 
     $scope.data.datasets = []; // new array in data object .. 
     $scope.data.labels =[]; 
     var theWholeOb={}; 
     var dataSetObj = {}; //temp object to push into dataset array.. 
     var dataSetObjtwo = {}; 
     /////////////anomalies depart 
     dataSetObj.data = []; 
     dataSetObj.label= 'My First dataset'; 
     dataSetObj.fillColor='rgba(220,220,220,0.2)'; 
     dataSetObj.strokeColor= 'rgba(220,220,220,1)'; 
     dataSetObj.pointColor= 'rgba(220,220,220,1)'; 
     dataSetObj.pointStrokeColor= '#fff'; 
     dataSetObj.pointHighlightFill= '#fff'; 
     dataSetObj.pointHighlightStroke='rgba(220,220,220,1)'; 
     getIncidentDepartByMonthFromTo.forEach(function(data) { 
      var monthNumber = $filter('date')(data.la_date, "MM"); 
      var mun = data.number; 
      $scope.data.labels.push(monthNumber);     
      dataSetObj.data.push(mun); 
     }); 
     $scope.data.datasets.push(dataSetObj);   
    } 
    else { 
     alert("failure"); 
    } 
}; 
function onError(response) { 
    console.log("-------getIncidentDepartByMonthFromTo FAILED-------"); 
    //$scope.stopSpin('spinner-0'); 
    console.log(response.data); 
    console.log("Inside getIncidentDepartByMonthFromTo error condition..."); 
    }; 
//----MAKE AJAX REQUEST CALL to GET DATA---- 
    ajaxServicess.getData(url,username,password, 'GET', '').then(onSuccess,onError); 
              }; 

эта функция возвращает этот результат:

$scope.data = { 
labels: ['Jan', 'Feb' 'Jul'], 
datasets: [ 
    { 
     label: 'My First dataset', 
     fillColor: 'rgba(220,220,220,0.2)', 
     strokeColor: 'rgba(220,220,220,1)', 
     pointColor: 'rgba(220,220,220,1)', 
     pointStrokeColor: '#fff', 
     pointHighlightFill: '#fff', 
     pointHighlightStroke: 'rgba(220,220,220,1)', 
     data: [75, 59, 80, 81, 56, 55] 
    } 
] 
       }; 

это работает хорошо.

и у меня есть вторая функция его возвращение тот же результат, но с разными данными Кур:

$scope.loadDataFromToMonthArrivee= function (from,to,year) { 
var url =servername+'admin/dashboard/getIncidentArriveeByMonthFromTo/'+from+'/'+to+'/'+year; 
//alert(url); 
function onSuccess(response) { 
    console.log("+++++getIncidentArriveeByDate SUCCESS++++++"); 

    if (response.data.success != false) { 

     $scope.payloadDayMonthYearData = response.data.data; 

     var loadedDataByDayMonthYear= $scope.payloadDayMonthYearData; 
      alert('xxx'+JSON.stringify(loadedDataByDayMonthYear)); 
     $scope.data = {}; // new object 
     $scope.data.datasets = []; // new array in data object .. 
     $scope.data.labels =[]; 
     var theWholeOb={}; 
     var dataSetObj = {}; //temp object to push into dataset array.. 
     var dataSetObjtwo = {}; 
     /////////////anomalies arrivee 
     dataSetObjtwo.data = []; 
     $scope.date=[]; 
     dataSetObjtwo.label='My Second dataset'; 
     dataSetObjtwo.fillColor= 'rgba(151,187,205,0.2)'; 
     dataSetObjtwo.strokeColor= 'rgba(151,187,205,1)'; 
     dataSetObjtwo.pointColor= 'rgba(151,187,205,1)'; 
     dataSetObjtwo.pointStrokeColor= '#fff'; 
     dataSetObjtwo.pointHighlightFill='#fff'; 
     dataSetObjtwo.pointHighlightStroke= 'rgba(151,187,205,1)'; 
     loadedDataByDayMonthYear.forEach(function(data) { 

      var monthNumber = $filter('date')(data.la_date, "MM"); 
      $scope.date.push(monthNumber); 
      var mun = data.number; 
      $scope.data.labels.push($scope.monthNumber); 

      dataSetObjtwo.data.push(mun); 
     }); 
     $scope.data.datasets.push(dataSetObjtwo); 

    } else { 
     alert("failure"); 
    } 
    // $scope.stopSpin('spinner-0'); 
}; 

function onError(response) { 
    console.log("-------getIncidentArriveeByDate FAILED-------"); 
    //$scope.stopSpin('spinner-0'); 
    console.log(response.data); 
    console.log("Inside getIncidentArriveeByDate error condition..."); 
}; 

//----MAKE AJAX REQUEST CALL to GET DATA---- 
ajaxServicess.getData(url,username,password, 'GET', '').then(onSuccess, onError); 

          }; 

эта функция возвращает этот результат:

$scope.data = { 
labels: [ 'Jan', 'Feb' 'Jul','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], 
datasets: [ 
    { 
     label: 'My Second dataset', 
     fillColor: 'rgba(151,187,205,0.2)', 
     strokeColor: 'rgba(151,187,205,1)', 
     pointColor: 'rgba(151,187,205,1)', 
     pointStrokeColor: '#fff', 
     pointHighlightFill: '#fff', 
     pointHighlightStroke: 'rgba(151,187,205,1)', 
     data: [ 102, 123, 145, 60, 161] 
    } 
] 
          }; 

это работает хорошо и, но на мой вопрос : как я могу объявить вторую функцию внутри первой функции и объединить возвращенные данные и получить окончательный результат следующим образом:

$scope.data = { 
labels: [ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], 
datasets: [ 
    { 
     label: 'My Second dataset', 
     fillColor: 'rgba(151,187,205,0.2)', 
     strokeColor: 'rgba(151,187,205,1)', 
     pointColor: 'rgba(151,187,205,1)', 
     pointStrokeColor: '#fff', 
     pointHighlightFill: '#fff', 
     pointHighlightStroke: 'rgba(151,187,205,1)', 
     data: [ 102, 123, 145, 60, 161] 
    },{ 
     label: 'My First dataset', 
     fillColor: 'rgba(220,220,220,0.2)', 
     strokeColor: 'rgba(220,220,220,1)', 
     pointColor: 'rgba(220,220,220,1)', 
     pointStrokeColor: '#fff', 
     pointHighlightFill: '#fff', 
     pointHighlightStroke: 'rgba(220,220,220,1)', 
     data: [75, 59, 80, 81, 56, 55] 
    } 
] 
        }; 
+0

Это уже третий раз, когда вы задаете этот вопрос. Посмотрите на эти ответы и интерпретируйте их, и объедините их с вашим решением. – devqon

+0

Я застрял на самом деле, я не могу двигаться вперед ... и никто не мог помочь –

+0

@imsiimsi вы разобрались? –

ответ

0

До тех пор, пока ваши объекты действительно содержат только массивы вы можете решить эту проблему следующим образом:

$scope.combineParts = function(part1, part2) { 
    var merged = angular.copy(part1); 

    for (key in part1) 
    {  
     if (part2.hasOwnProperty(key)) 
      merged[key].push.apply(merged[key], part2[key]) 
    } 

    return merged; 
} 

Demo в этой скрипке: https://jsfiddle.net/gat4co9x/

Надеется, что это помогает. ;)

EDIT: Чтобы интегрировать, просто вызовите вторую функцию в onSuccess первого, а the combParts - в onSuccess второго.

0

Это немного легче для вас, сначала вызовите функцию $scope.loadDataFromToMonth(params); и внутри этой функции при вызове функции вызова второй функции $scope.loadDataFromToMonthArrivee(params); после подготовки $scope.data.

Теперь не инициализирует $scope.data снова в $scope.loadDataFromToMonthArrivee(params); и просто сделать это $scope.data.datasets.push(dataSetObjtwo);

Я ниже при условии, что подобный код, чтобы просто попробовать использовать тот же не запутаться и попробовать что-нибудь новое, но придерживаться его и после этого вы можете работать над разделением списка меток из обоих объектов.

$scope.loadDataFromToMonth= function (from,to,year) { 
// $scope.loadDataFromToMonthArrivee(from,to,2016); 
    var url = servername+'admin/dashboard/getIncidentDepartByMonthFromTo/'+from+'/'+to+'/'+year; 
// alert(url); 

function onSuccess(response) { 
    console.log("+++++getIncidentDepartByMonthFromTo SUCCESS++++++"); 
    if (response.data.success != false) { 
     $scope.payloadgetIncidentDepartByMonthFromTo = response.data.data; 
     var getIncidentDepartByMonthFromTo= $scope.payloadgetIncidentDepartByMonthFromTo; 
     console.log(JSON.stringify(getIncidentDepartByMonthFromTo)); 
     $scope.data = {}; // new object 
     $scope.data.datasets = []; // new array in data object .. 
     $scope.data.labels =[]; 
     var theWholeOb={}; 
     var dataSetObj = {}; //temp object to push into dataset array.. 
     var dataSetObjtwo = {}; 
     /////////////anomalies depart 
     dataSetObj.data = []; 
     dataSetObj.label= 'My First dataset'; 
     dataSetObj.fillColor='rgba(220,220,220,0.2)'; 
     dataSetObj.strokeColor= 'rgba(220,220,220,1)'; 
     dataSetObj.pointColor= 'rgba(220,220,220,1)'; 
     dataSetObj.pointStrokeColor= '#fff'; 
     dataSetObj.pointHighlightFill= '#fff'; 
     dataSetObj.pointHighlightStroke='rgba(220,220,220,1)'; 
     getIncidentDepartByMonthFromTo.forEach(function(data) { 
      var monthNumber = $filter('date')(data.la_date, "MM"); 
      var mun = data.number; 
      $scope.data.labels.push(monthNumber);     
      dataSetObj.data.push(mun); 
     }); 
     $scope.data.datasets.push(dataSetObj);  
     $scope.loadDataFromToMonthArrivee(params);//call the second list http call after you prepare first object ...  
    } 
    else { 
     alert("failure"); 
    } 
}; 
function onError(response) { 
    console.log("-------getIncidentDepartByMonthFromTo FAILED-------"); 
    //$scope.stopSpin('spinner-0'); 
    console.log(response.data); 
    console.log("Inside getIncidentDepartByMonthFromTo error condition..."); 
    }; 

$scope.loadDataFromToMonthArrivee= function (from,to,year) { 
var url =servername+'admin/dashboard/getIncidentArriveeByMonthFromTo/'+from+'/'+to+'/'+year; 
//alert(url); 
function onSuccess(response) { 
    console.log("+++++getIncidentArriveeByDate SUCCESS++++++"); 

    if (response.data.success != false) { 

     $scope.payloadDayMonthYearData = response.data.data; 

     var loadedDataByDayMonthYear= $scope.payloadDayMonthYearData; 
      alert('xxx'+JSON.stringify(loadedDataByDayMonthYear)); 

     var theWholeOb={}; 
     var dataSetObj = {}; //temp object to push into dataset array.. 
     var dataSetObjtwo = {}; 
     /////////////anomalies arrivee 
     dataSetObjtwo.data = []; 
     $scope.date=[]; 
     dataSetObjtwo.label='My Second dataset'; 
     dataSetObjtwo.fillColor= 'rgba(151,187,205,0.2)'; 
     dataSetObjtwo.strokeColor= 'rgba(151,187,205,1)'; 
     dataSetObjtwo.pointColor= 'rgba(151,187,205,1)'; 
     dataSetObjtwo.pointStrokeColor= '#fff'; 
     dataSetObjtwo.pointHighlightFill='#fff'; 
     dataSetObjtwo.pointHighlightStroke= 'rgba(151,187,205,1)'; 
     loadedDataByDayMonthYear.forEach(function(data) { 

      var monthNumber = $filter('date')(data.la_date, "MM"); 
      $scope.date.push(monthNumber); 
      var mun = data.number; 
      $scope.data.labels.push($scope.monthNumber); 

      dataSetObjtwo.data.push(mun); 
     }); 
     $scope.data.datasets.push(dataSetObjtwo); 

    } else { 
     alert("failure"); 
    } 
    // $scope.stopSpin('spinner-0'); 
}; 

function onError(response) { 
    console.log("-------getIncidentArriveeByDate FAILED-------"); 
    //$scope.stopSpin('spinner-0'); 
    console.log(response.data); 
    console.log("Inside getIncidentArriveeByDate error condition..."); 
}; 
+0

можем ли мы передать чат, как вчера –

+0

вы можете указать ссылку? –

+0

Я не могу этого сделать! –

Смежные вопросы