我正在编写一个与RESTfull服务器“对话”的应用程序,我遇到了一些问题。以下是我的代码的精简版:https://gist.github.com/sasxa/ced4ecfa2a147b207cac,以及一些问题:
1)如何处理我的服务器返回的自定义JSON格式? $ resource接缝“要求”清理数据......例如:
// This works
response = [{...}, {...}, {...}]
// This doesn't work
response = { status: 'OK', data: [{...}, {...}, {...}], message: 'Hello!' }
据我了解,$ resorce.query()是一个在transformResponse阶段生成的承诺,但我无法在此对象的任何位置找到我的消息。
我开始研究$ http拦截器,我想我可以处理来自服务器的响应,但我不知道如何将该数据传递给服务(除了 data 之外的数组资源)或控制器......
2)有没有更好的解决方案来动态加载模板然后我正在使用的那个?
angular.module( 'APPLICATION' )
.config( ['$routeProvider', function ($routeProvider) {
$routeProvider.when( '/:node', {
template: '<section ng-controller="Controller" ng-include="template"></section>',
controller: 'Controller'
} );
}] )
3)对代码结构和组织有任何建议或意见吗?我对AngularJS很新。我阅读并观看了许多教程,只是想确保我没有犯任何重大错误(:
感谢。
答案 0 :(得分:1)
您不需要使用transformData修改该值,只需在进行查询调用时直接访问它
MyResource.query({}, function(result) {
$log.info(result.status);
$log.info(result.data);
$log.info(result.message);
});
您还需要确保将$ resource配置为期望将Object作为结果,而不是Array(默认值)。你可以这样做:
$resource('<someurl>/:id', {id: '@id'}, {
'query' : { method: 'GET', isArray: false }
});
您可以使用$templateCache在javascript中存储模板,然后在routeProvider中使用templateUrl
有一个很棒的Google文档跟踪here上角应用布局的当前最佳做法。
我还强烈建议您查看像ngbp这样的项目,以便更好地了解如何将整个应用整合在一起