Javascript 如何使用角度js$资源?

Javascript 如何使用角度js$资源?,javascript,angularjs,Javascript,Angularjs,因此,我尝试使用angular js$资源函数,同时使用ionic框架构建应用程序。但我似乎不能让它工作。 相关代码: Service.js .factory('Pages', function($resource) { var source = $resource("http://localhost:5432/api/pages",{}, {query: { method: "GET", isArray: false }}); return source; }) .c

因此,我尝试使用angular js$资源函数,同时使用ionic框架构建应用程序。但我似乎不能让它工作。 相关代码:

Service.js

.factory('Pages', function($resource) {
    var source = $resource("http://localhost:5432/api/pages",{},
    {query: { method: "GET", isArray: false }});
    return source;
})
.controller('PagesCtrl', function($scope, Pages) {
$scope.pages =  Pages.query();
$scope.results = $scope.pages.results;
console.log($scope.results);
})
controllers.js

.factory('Pages', function($resource) {
    var source = $resource("http://localhost:5432/api/pages",{},
    {query: { method: "GET", isArray: false }});
    return source;
})
.controller('PagesCtrl', function($scope, Pages) {
$scope.pages =  Pages.query();
$scope.results = $scope.pages.results;
console.log($scope.results);
})
browse.html

<ion-view view-title="Browse">
  <ion-content>
    <h1>Browser</h1>
    <ion-list>
      <ion-item ng-repeat="page in results">
        <h2>{{page.title}}</h2>
      </ion-item>

    </ion-list>
  </ion-content>
 </ion-view>

浏览器
{{page.title}}
数据呢

{
"count": 2,
"next": null,
"previous": null,
"results": [
    {
        "id": 1,
        "parent": null,
        "title": "Blog",
        "content": "<p>Blog</p>",
        "content_model": "richtextpage",
        "slug": "blog",
        "publish_date": null,
        "login_required": false,
        "meta_description": "Blog",
        "tags": ""
    },
    {
        "id": 2,
        "parent": null,
        "title": "Lorem Ipsum",
        "content": "Lorem ipsum ....",
        "tags": ""
    }
]
}
{
“计数”:2,
“下一个”:空,
“先前”:空,
“结果”:[
{
“id”:1,
“父项”:空,
“标题”:“博客”,
“内容”:“博客”

”, “内容模型”:“richtextpage”, “slug”:“blog”, “发布日期”:空, “需要登录”:false, “元描述”:“博客”, “标记”:” }, { “id”:2, “父项”:空, “标题”:“Lorem Ipsum”, “内容”:“Lorem ipsum…”, “标记”:” } ] }

但是控制台日志(在controllers.js中)总是打印“undefined”。我已经做了好几个小时了,似乎找不到问题所在。

$scope.pages是一个承诺。要写入控制台,您需要使用如下回调函数:

$scope.pages = Pages.query();
$scope.pages.$promise.then(function (result) {
  console.log(results);
});

$scope.pages是一个承诺。要写入控制台,您需要使用如下回调函数:

$scope.pages = Pages.query();
$scope.pages.$promise.then(function (result) {
  console.log(results);
});

.query()
的实际结果对象是一个承诺,它将在某个时刻保存结果

因此,在您尝试访问有效负载的result属性时,请求可能尚未完成

但是,Angular
ng repeat
语句具有对承诺的内置支持,因此在您的视图中,如果您这样做,请浏览.html:

  <ion-item ng-repeat="page in pages.results">


不要在控制器中处理
$scope.results
,一切都应该看起来更好。

query()的实际结果对象是一个承诺,它将在某个时候保留结果

因此,在您尝试访问有效负载的result属性时,请求可能尚未完成

但是,Angular
ng repeat
语句具有对承诺的内置支持,因此在您的视图中,如果您这样做,请浏览.html:

  <ion-item ng-repeat="page in pages.results">


不要在控制器中处理
$scope.results
,一切都应该看起来更好。

以下是我对该服务的建议:

.factory('Pages', function($resource) {
    return {
       source: $resource("http://localhost:5432/api/pages",{},
                   { 
                      query: { 
                          method: "GET", 
                          isArray: false 
                      }
                    })
    }
})
然后在ctrl键中:

.controller('PagesCtrl', function($scope, Pages) {
    $scope.pages =  Pages.source.query();
    $scope.results = $scope.pages;
    console.log($scope.results);
})
但是您知道查询只返回一个对象,因为您告诉
$resource
您的查询没有返回数组(它是false)


只有在后端定义正确的情况下,这项服务才有效。

以下是我对该服务的建议:

.factory('Pages', function($resource) {
    return {
       source: $resource("http://localhost:5432/api/pages",{},
                   { 
                      query: { 
                          method: "GET", 
                          isArray: false 
                      }
                    })
    }
})
然后在ctrl键中:

.controller('PagesCtrl', function($scope, Pages) {
    $scope.pages =  Pages.source.query();
    $scope.results = $scope.pages;
    console.log($scope.results);
})
但是您知道查询只返回一个对象,因为您告诉
$resource
您的查询没有返回数组(它是false)


只有在后端定义正确的情况下,这才有效。

您收到了两个非常好的答案,因此为了全面起见,我只陈述显而易见的问题。在您的浏览器中导航到,并确保它返回您期望的数据。您收到了两个非常好的答案,因此为了全面起见,我只陈述显而易见的问题。在浏览器中导航到,并确保它返回您期望的数据。天哪,非常感谢。我在任何地方都找不到关于这个的清晰的文档。是的,文档有点粗糙,但非常彻底。有关http调用和承诺的详细信息,请参见
$http
部分:(
$resource
是对它的抽象)Omg,非常感谢。我在任何地方都找不到关于这个的清晰的文档。是的,文档有点粗糙,但非常彻底。有关http调用和承诺的详细信息,请参见
$http
部分:(
$resource
是对它的抽象)