【发布时间】:2015-09-18 23:59:39
【问题描述】:
我一直在使用 Neo4j 学习 Angular,但在处理我的查询时收到的 JSON 时遇到了问题。
现在,我想捕获数据,并能够在不同的应用程序视图之间使用它(即点击选择的汽车,转到该汽车的视图),所以为了做到这一点,我想我需要建立一个处理所有数据的工厂。所以现在,我有这个。
我对 Neo 的调用,我猜它也应该在 Factory 而不是控制器中。
function restcall($scope, $http) {
var call = '{ "statements" : [ { "statement" : "MATCH (n:Cars) RETURN n ORDER BY n.initRank DESC LIMIT 10" } ] }';
$http({
method: 'POST',
url: 'http://myserver:7474/db/data/transaction/commit',
data: call,
headers: { 'Content-Type': 'application/json',
'Authorization': 'Basic mybasekey' }
})
.success(function (data, status) {
$scope.status = status;
$scope.response = data.results;
})
})
};
这适用于个别情况,但我的问题是我收到的 JSON 作为对我的呼叫的响应。看起来是这样的
{
"results":[{
"columns":[
"n"
],
"data":[
{"row":[{"name":"Car1","initRank":"..."}]},
{"row":[{"name":"Car2","initRank":"..."}]},
{"row":[{"name":"Car3","initRank":"..."}]},
{"row":[{"name":"Car4","initRank":"..."}]},
{"row":[{"name":"Car5","initRank":"..."}]},
{"row":[{"name":"Car6","initRank":"..."}]}]
}],
"errors":[]
}
现在,因为我只使用这个 json 中的行,所以我想设置一个变量,比如说汽车,它将具有这种形状
var Cars = [{
id: 0,
name: 'Car1',
initRank: '...'
}, {
id: 1,
name: 'Car2',
initRank: '...'
}, {
id: 2,
name: 'Car3',
initRank: '...'
}, {
// And so on until end of the result in rows
}];
现在,为此,我尝试使用 FOR 循环并将结果添加到单个数组成员,例如
car[i].name = response.data[i].row[0].name
但它不起作用。
所以最终我的问题是。
1.我的工厂应该是什么样子?
这样好吗?
.factory('Cars', function($scope, $http){
//rest of my rest call from function
} )
我已经看到使用 $http.get() 的示例,但我不知道如何传递我现在在我的 http 中拥有的所有东西(为了数据库,我的密码调用,授权层需要发布该方法..),使用 http.get()。
2。如何格式化我的回复以便有一个好的var Cars?
还有一件事困扰着我……
- 是否可以在不通过 ng-repeat 的情况下从工厂传递特定行?如果我只想访问 Car3 的案例。
如果不是,就像我想的那样,如果我正在使用 response.data[2].row[0].name 阅读 Car3,如何如何将其传递给新视图?
【问题讨论】:
标签: javascript json angularjs rest factory