2016-08-03 4 views
0

Я хотел бы сравнить значения этих двух функций. К сожалению, я попытался сделать variablesglobal, но я продолжаю получать undefined.Как сравнить значения между этими двумя функциями?

'use strict'; 

/** 
* @ngdoc function 
* @name dashyAppApp.controller:Dashy3Ctrl 
* @description 
* # Dashy3Ctrl 
* Controller of the dashyAppApp 
*/ 

angular.module('dashyAppApp') 
    .controller('Dashy3Ctrl', function ($rootScope, $scope, employees, $interval) { 
    var _this = this; 

    $scope.getData = function() { // getDATA function 
    employees.getEmployees().then(function(response){ 
     _this.items = response.data; 
     $scope.items = _this.items; 

     callmecrazy(response.data); 
    }); 

    }// End getDATA function 
    $scope.getData(); 

    $scope.getDataB = function() { 
    employees.getEmployees().then(function(response){ 
    _this.items = response.data; 
    callmecrazier(response.data); 
    }); 
} 
$interval(function(){ 
$scope.getDataB(); 
}, 10000); 

function callmecrazier(response1){ 
    callmecrazierVal = response1.countries; 
    return callmecrazierVal; 
} 

function callmecrazy(response){ 
    callmecrazyVal = response.countries; 
    return callmecrazyVal; 
} 

if(!angular.equals(callmecrazierVal(), callmecrazyVal())) { 
    //trigger some other function 
    } 
}); 

Я хочу проверить, callmecrazierVal !== callmecrazyVal. Это мой полный код controller выше.

if(callmecrazierVal !== callmecrazyVal){ 
    //trigger some other function 
} 
+2

'var' делает их локальными, если вы хотите, чтобы они глобально удаляли его. Вы также можете использовать 'return' вместо консольного журнала, а затем сравнить вызовы функций. –

+0

Откуда берутся эти ответы? – Bergi

+0

@Bergi Я отредактирую код, чтобы узнать, откуда они взялись! –

ответ

1

Если значения, возвращаемые функциями не примитивов вы должны:

if(!angular.equals(callmecrazier(), callmecrazy()) { 
    //trigger some other function 
} 

EDIT Я предполагаю, вы хотите поразить api с интервалом в 10 секунд и проверить если есть какие-то изменения, не так ли? (иначе, пожалуйста, уточните, чего вы пытаетесь достичь). Если это так, вам нужно связать асинхронные вызовы, а затем сравнить, как показано ниже:

'use strict'; 

/** 
    * @ngdoc function 
    * @name dashyAppApp.controller:Dashy3Ctrl 
    * @description 
    * # Dashy3Ctrl 
    * Controller of the dashyAppApp 
*/ 

angular.module('dashyAppApp') 
.controller('Dashy3Ctrl', function($rootScope, $scope, employees, $interval)   { 
var _this = this; 

$scope.getData = function() { // getDATA function 
    return employees.getEmployees().then(function(response) { 
     return response.data; 
    }); 

    } // End getDATA function 


$scope.getData() 
.then(function(data1){ 
    $scope.items = data1; 
    $interval(function() { 
    $scope.getData() 
    .then(function(data2){ 
     if (!angular.equals($scope.items, data1) { 
      //trigger some other function 
     } 
    }); 
    }, 10000); 

}); 

}); 
+0

angular.js: 13920 ReferenceError: callmecrazierVal не определен –

+0

см. Править. вы должны, конечно, сравнивать возвращаемые значения двух функций. –

+0

angular.js: 13920 TypeError: Невозможно прочитать «страны стран» неопределенного at callmecrazier –

2

Вы должны вернуть что-то из своих функций. Возвращаемое значение будет сравниваться.

function callmecrazier(response1){ 
    var callmecrazierVal = response1.countries; 
    return callmecrazierVal; 
} 

function callmecrazy(response){ 
    var callmecrazyVal = response.countries; 
    return callmecrazyVal; 
} 

Затем сравните их, как это:

if(callmecrazierVal() !== callmecrazyVal()){ 
    //trigger some other function 
} 
+0

говорит, что callmecrazierVal не определен. –

+0

1. Убедитесь, что вы вызываете эту функцию из той же области. 2. Не забудьте скобки '()' при вызове этой функции. –

+0

Я добавил больше кода, поэтому посмотрю, откуда я получаю ответ. –

0
function callmecrazier(response1){ 
    var callmecrazierVal = response1.countries; 
    return callmecrazierVal; 
} 

function callmecrazy(response){ 
    var callmecrazyVal = response.countries; 
    return callmecrazyVal; 
} 

if(callmecrazier(response1) !== callmecrazy(response)){ 
    //Your code........... 
} 
+0

ReferenceError: response1 не определен. Я отредактирую код, чтобы добавить, как я получаю значения ответа. –

+0

Значение передачи в функции. Я думаю, что ответ1 - это ваш элемент. –

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