в моем угловом приложении Я использую фабрику, которая получает данные json и передает ее контроллеру. это работает для меня, если я использую простой массив JSON, но не во вложенном массиве в случае простого файла JSON У меня есть эта структурадоступ json вложенный массив от фабричного углового
[
{
"name": "bond_1",
"profession": "Programmer",
"hometown": "St Louis, MO"
},
{
"name": "bond_2",
"profession": "Salesman",
"hometown": "Denver, CO"
},
{
"name": "bond_3",
"profession": "CEO",
"hometown": "San Francisco, CA"
}
]
моя фабрика это
.factory('Topology', function ($http){
var data = [];
return{
get: function(){
if (data.length == 0){
$http.get("data.json")
.success(function (response){
for(var i=0, ii=response.length; i<ii; i++){
data.push(response [i]);
}
});
}
return data;
},
}
});
и мой контроллер это
var installerControllers =angular.module('installerControllers', []);
installerControllers.controller('stageThreeCtrl', function ($scope, Topology) {
$scope.bonds=Topology.get();
})
теперь все работает отлично, и я могу просмотреть данные, когда я делаю нг-повтора на него с точки зрения
, но мне нужно вместо простой структуры JSon использовать вложенный массив, который выглядит как этот
{
"bonds":[
{
"name": "Alex",
"profession": "Programmer",
"hometown": "St Louis, MO"
},
{
"name": "David",
"profession": "Salesman",
"hometown": "Denver, CO"
},
{
"name": "Laura",
"profession": "CEO",
"hometown": "San Francisco, CA"
}
],
"networks":[
{
"name": "test",
"all_hosts": "false",
"IP_Version": "IPV4",
"IP address": "10.10.10.10",
"IPV net mask": "255.255.255.0",
"Interface": "bond 0",
"VLAN TAG": "4001",
"Description": "some custom description"
}
]
}
сейчас я пытаюсь позвонить по одному из объектов от контроллера таким образом
var installerControllers =angular.module('installerControllers', []);
installerControllers.controller('stageThreeCtrl', function ($scope, Topology) {
var data=Topology.get();
$scope.bonds=data.bonds;
})
, но он не работает, и я попал в console.log пустой массив
ваша помощь будет очень ценится
выглядит как проблема с асинхронным доступом, к моменту запуска вашего объекта $ scope.bonds = data.bonds, get() не был разрешен, следовательно, пустой массив. – Jax
попытайтесь установить небольшую задержку между данными var = Topology.get(); и присваивание $ scope.bonds = data.bonds; чтобы доказать, что это проблема асинхронности – PhiceDev
, как я могу добавить эту задержку? –