我使用AngularJS来调用SQL查询并返回整个表。有没有办法在检索数据后操作前端的数据,或者在返回Angular之前更好地在处理页面上进行操作?
下面的代码显示了我用来检索数据的app.js文件,我已经包含了一行HTML来显示我想要实现的输出类型的示例。
app.js
var dashboardApp = angular.module('dashboardApp', []);
dashboardApp.controller('dashboardController', function($scope, $http, $location, $anchorScroll) {
$http.get('lib/dbp.php').success(function(data) {
$scope.surveydata = data;
});
});
示例HTML
<ul>
<li ng-repeat="item in surveydata['data']">{{item.location}}</li>
</ul>
{{surveydata['data'].location.length}}
示例输出
{ "data": [
{
"surveyid": "51",
"customerName": "Steve Jones",
"companyName": "Acme",
"projectName": "Various Project",
"customerPhone": "",
"customerEmail": "",
"location": "Dallas",
"q1": "1",
"q1Comment": "None",
"q2": "1",
"q2Comment": "None",
"q3": "1",
"q3Comment": "None",
"q4": "2",
"q4Comment": "None",
"q5": "1",
"q5Comment": "None",
"q6": "Yes",
"q6Comment": "Always.",
"q7": "Yes",
"q7Comment": "Always.",
"q8": "Yes",
"q8Comment": "Certainly.",
"q9": "Yes",
"q9Comment": "None",
"q10Comment": "None",
"q11Comment": "Keep up the good work!",
"q12": "No",
"timestamp": "2015-07-17 11:08:24",
"ipaddress": ""
}
ng-repeat
部分适用于基本数据输出但使用location.length
我真正想要做的是能够单独计算位置数,即第1区有5个提交的调查或区域2有8。
我是Angularjs的新手,所以我想弄清楚这种情况的最佳做法是什么。
我希望看到的输出是“达拉斯”位置的所有记录的计数或“达拉斯”所有记录的平均分数。还有很多其他我想做的事情,但是掌握如何进行简单的数据操作,就像上面提到的那样,可以帮助我进行其他数据应用。
答案 0 :(得分:0)
使用SQL查询始终返回整个表通常不是一个好习惯。如果您保证永远拥有一张小桌子,这是可以接受的(一个强有力的声明)。否则,最好将查询定位到将要呈现的任何数据,并使用第二个查询来获取高级信息,例如count。
我不知道你的后端是什么样的,但是一种典型的方法就是这样(伪代码):
data = {}
SELECT surveyid, customerName, ... FROM "YourTable" WHERE (...) LIMIT 48 OFFSET 0;
response -> data.rows = response
SELECT count(*) FROM "YourTable" WHERE (...);
response -> data.count = response
return data
然后在前端你操纵{ rows: [...], count: 123 }
,根据你的需要,你应该采用你想要的格式。