AngularJs、Django RESTful 和 Restangular:使用超链接数组
AngularJs, Django RESTful and Restangular: Consuming an array of hyperlinks
我在配置 restangular 以使用响应对象中的 api url 列表时遇到问题。
目前,我的对象响应如下:
{
folders: ['http://localhost:8000/api/folder/1',
'http://localhost:8000/api/folder/2',
'http://localhost:8000/api/folder/3']
}
但我希望它 return 文件夹对象
{
folders: [{
files: ['http://localhost:8000/api/file/1'
'http://localhost:8000/api/file/2']
},
{
files: ['http://localhost:8000/api/file/3']
},
{
files: ['http://localhost:8000/api/file/4']
}]
}
(最后是文件夹对象中的文件对象):
{
folders: [{
files: [{},{}]
},
{
files: [{}]
},
{
files: [{}]
}]
}
如何通过 addResponseInterceptor 或其他方式配置 restangular 以使用嵌套超链接数组
我还没有找到一个解决方案,它可以独立地对所有嵌套的 url 执行 get(),而无需在控制器中明确执行。
因此,对于这些两次嵌套的 json,我创建了三个不同的对象,而不是一个完整的 cabinet 对象。 Restangular 可以在返回的对象上使用其 put 和 patch 方法。
然后我遍历文件柜中的每个文件夹,依次遍历文件夹中的每个文件,将我的所有对象放入视图中。
如果谁有更好的方法告诉我!
vm.cabinet = {};
vm.folders = [];
vm.files = {}
Cabinet.get(id).then(cabinetSuccessFn, errorFn);
function cabinetSuccessFn(response) {
vm.cabinet = response;
vm.cabinet.folders.map(function(folder) {
return Folder.get(parseInt(folder.substr(folder.lastIndexOf('/', folder.length - 2) + 1).slice(0, -1))).then(folderSuccessFn, errorFn);
});
vm.loading = false;
}
function folderSuccessFn(response) {
vm.folders.push(response);
vm.files[response.id] = [];
response.files.map(function(file) {
return Files.get(parseInt(file.substr(file.lastIndexOf('/', file.length - 2) + 1).slice(0, -1))).then(fileSuccessFn, errorFn);
});
}
function fileSuccessFn(response) {
vm.filess[response.folder.substr(response.folder.lastIndexOf('/', response.folder.length - 2) + 1).slice(0, -1)].push(response);
}
function errorFn(response) {
$log.error('unable to load resource');
$log.error(response);
}
我在配置 restangular 以使用响应对象中的 api url 列表时遇到问题。
目前,我的对象响应如下:
{
folders: ['http://localhost:8000/api/folder/1',
'http://localhost:8000/api/folder/2',
'http://localhost:8000/api/folder/3']
}
但我希望它 return 文件夹对象
{
folders: [{
files: ['http://localhost:8000/api/file/1'
'http://localhost:8000/api/file/2']
},
{
files: ['http://localhost:8000/api/file/3']
},
{
files: ['http://localhost:8000/api/file/4']
}]
}
(最后是文件夹对象中的文件对象):
{
folders: [{
files: [{},{}]
},
{
files: [{}]
},
{
files: [{}]
}]
}
如何通过 addResponseInterceptor 或其他方式配置 restangular 以使用嵌套超链接数组
我还没有找到一个解决方案,它可以独立地对所有嵌套的 url 执行 get(),而无需在控制器中明确执行。
因此,对于这些两次嵌套的 json,我创建了三个不同的对象,而不是一个完整的 cabinet 对象。 Restangular 可以在返回的对象上使用其 put 和 patch 方法。
然后我遍历文件柜中的每个文件夹,依次遍历文件夹中的每个文件,将我的所有对象放入视图中。
如果谁有更好的方法告诉我!
vm.cabinet = {};
vm.folders = [];
vm.files = {}
Cabinet.get(id).then(cabinetSuccessFn, errorFn);
function cabinetSuccessFn(response) {
vm.cabinet = response;
vm.cabinet.folders.map(function(folder) {
return Folder.get(parseInt(folder.substr(folder.lastIndexOf('/', folder.length - 2) + 1).slice(0, -1))).then(folderSuccessFn, errorFn);
});
vm.loading = false;
}
function folderSuccessFn(response) {
vm.folders.push(response);
vm.files[response.id] = [];
response.files.map(function(file) {
return Files.get(parseInt(file.substr(file.lastIndexOf('/', file.length - 2) + 1).slice(0, -1))).then(fileSuccessFn, errorFn);
});
}
function fileSuccessFn(response) {
vm.filess[response.folder.substr(response.folder.lastIndexOf('/', response.folder.length - 2) + 1).slice(0, -1)].push(response);
}
function errorFn(response) {
$log.error('unable to load resource');
$log.error(response);
}