Javascript 如何使用角度js$资源?
因此,我尝试使用angular js$资源函数,同时使用ionic框架构建应用程序。但我似乎不能让它工作。 相关代码: Service.jsJavascript 如何使用角度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
.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属性时,请求可能尚未完成
但是,Angularng repeat
语句具有对承诺的内置支持,因此在您的视图中,如果您这样做,请浏览.html:
<ion-item ng-repeat="page in pages.results">
不要在控制器中处理
$scope.results
,一切都应该看起来更好。query()的实际结果对象是一个承诺,它将在某个时候保留结果
因此,在您尝试访问有效负载的result属性时,请求可能尚未完成
但是,Angularng 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
是对它的抽象)