我有一个服务,我在我的登陆控制器中使用它。 问题是当默认情况下调用$ init时会调用$ http。 但我需要根据点击给出params。所以我在ng-click上签了一个ajax调用。
但是我在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 服务器使用express和felixge-node / mysql和moment编写在nodejs中。
服务器正在运行但是clint end在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>
答案 0 :(得分:1)
这里的问题是服务中的情感对象 情绪= [];
它在启动时分配,但它没有重新初始化,因此保持前一个值并在每次调用时发送相同的JSON数据。 因为这里的JSON是第一次打电话。去除 若情绪能够解决这个问题