我有一个工厂,它进入 Controller ,我试图从 HTML 页面上的显示中获取数据。然而,我在指定对象的路径时遇到了困难。
我的工厂:
app.factory('APIMethodService', function() {
var Head = "api.example.com";
return {
apis:
[{
accounts: [
{
v1: [
{
uri: Head+"/v1/accounts/",
item1: "AccountNumber",
item2: "MoneyInAccount"
}],
v2: [
{
uri: Head+"/v2/accounts/",
item1: "AccountNumber",
item2: "MoneyInAccount"
}]
}
],
customers: [
{
v1: [
{
uri: Head+"/v1/customers/",
item1: "CustomerName",
item2: "CustomerID",
item3: "CustomerEmail"
}]
}
]
}]
};
});
我的 Controller :
app.controller('APIController', function($scope, APIMethodService) {
$scope.title = "API";
$scope.apiList = APIMethodService;
$scope.accountList = $scope.apiList.accounts.v1;
$scope.accountList2 = $scope.apiList[0][0];
});
我的 HTML
<div ng-controller="APIController">
<div id="api" class="row">
<div class="col-xs-12">
<div class="row" style="font-size:20px">
{{title}} Page!
<table class="table table-striped">
<tr ng-repeat="api in apiList | orderBy:'uri' | filter:search">
<td>{{api.uri}}</td>
<td>{{api.item1}}</td>
<td>{{api.item2}}</td>
</tr>
</table>
</div>
</div>
</div>
</div>
我得到的错误与 Controller 试图解析我想要获取的单个对象有关,例如帐户或客户,然后是任何版本v#,他们可能有。
所以它会说诸如
之类的内容TypeError: Cannot read property 'v1' of undefined
我只需要一些帮助来指定进入工厂服务的正确途径。
最佳答案
您遇到一些问题。首先,您错误地引用了从工厂返回的对象。 APIMethodService
是您要注入(inject)的工厂,因此您需要首先引用该工厂返回的对象,如下所示:
APIMethodService.apis
这将为您提供整个 JSON 对象。
从那里开始,对象的其余部分由对象数组组成,因此引用“v1”不会给您带来任何好处。您需要指定一个索引。如果您想要 v1,您需要:
APIMethodService.apis[0].accounts[0].v1
这将为您提供 v1 数组,它又是一个对象数组。
客户将是:
APIMethodService.apis[0].customers[0].v1
关于javascript - AngularJS 嵌套对象数组路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28265925/