Angularjs $ http не возвращает вызовы по ng-click после 1-го вызова

0

У меня есть службы, которые я использую в моем контроллере. проблема в том, что при запуске приложения по умолчанию вызывается $ http. Но мне нужно дать параметры на основе щелчка. поэтому я включил ajax-вызов на ng-click.

Но я получаю одни и те же данные по ng-click

var sent = angular.module("sentAnalysis",["ngRoute"]);
var log = console.log.bind(console);





'use strict';
sent.service('Sentiments', function ($http) 
{
    var sentiments = [];
    return {
        getData: function(api,params,callback) {


            log(api);
            var cb = callback || angular.noop;
            if(sentiments.length !== 0) 
            {
                cb(sentiments);
            }else{
                $http.get(api,
                {
                    params : params

                })
                 .success(function(result) 
                    {

                    sentiments = result;
                    cb(result);
                    })
                    .error(function() {
                        cb();
                    })
            }
        }

    }
});

И контроллер

app.controller('landingCtrl',  function ($scope,$http,Sentiments,$rootScope) 
{

 $scope.clickYesterday = function()
 {

    Sentiments.getData(api,params,function(res) 
    {

    }   

 }; 


 $scope.clickTomorrow = function()
 {

    Sentiments.getData(api,params,function(res) 
    {

    }   

 };



 /*Default Http Always Executes*/
 Sentiments.getData(api,params,function(res) 
    {

    }   


}]);

По умолчанию всегда выполняется, но функции, привязанные к ng-click, не выполняются, но alwsys возвращает тот же JSON с сервера. Сервер написан в nodejs с помощью выражения и felixge-node/mysql и момента.

сервер работает, но конец клина не работает на ng-click

базовый маршрут

app.get('/api/sentiment',function(req,res)
{
  var sent ={};
  sent.status =false;
  if(user.isDB)
  {  

  var startDate = req.param('startDate');
  var endDate = req.param('endDate');

  var startValid  = moment(startDate).isValid();
  var endValid  = moment(endDate).isValid();
  log(startValid + " "+endValid);

  if(startValid && endValid)
  {

      var options ={};
      options.values = [];
      options.values.push(startDate);
      options.values.push(endDate);
      options.sql = 'Some Query ';
      options.timeout = 4000;



      connection.query(options,function(err, rows, fields)
      {
        if (!err)
        {
          log("Data row received For Query");
          log("Data row Length : "+rows.length);
          log("Executing Query :");
          log("StartDate : "+startDate);
          log("EndDate : "+endDate);
          log(options.sql);


            if(rows.length!=0)
            { 
            sent.status =true;
            sent.data = rows;
            }
            res.send(sent);
        }
      });

  }
  else
  {
    log("Invalid Date Format/Or Data Error");
  }

}
else
{
  log("DataBase Connection Issue");
   res.send(sent);
}



});

И html выглядит так

 <div ng-click="clickYesterday()" class="btn btn-primary"><b>Yesterday</b></div>
Теги:
express

1 ответ

1

Проблема здесь - это объект Sentiment в сервисе sentiment = [];

его назначается при запуске, но не получает инициализацию, таким образом сохраняя предыдущее значение и отправляя одни и те же данные JSON для каждого вызова. так как JSON sotred здесь - это первый раз, когда вызов сделан. удаление, если затем с чувством разрешает эту проблему

  • 0
    Это не имеет ничего общего с угловым сервисом $ http. Фактический вызов службы $ http происходит только один раз, потому что в последующие времена условие sentiments.length !== 0 имеет значение true, и возвращается изначально присвоенное значение sentiments

Ещё вопросы

Сообщество Overcoder
Наверх
Меню