AngularJS:应用程序无法从GET请求获取数据 [英] AngularJS: app not getting data from get request
本文介绍了AngularJS:应用程序无法从GET请求获取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的角应用具有以下code:
index.jade:
DOCTYPE 5
HTML
头 体(NG-应用='应用')
DIV(NG-控制器='EventController')
DIV(NG-重复='事件中的事件)
H2 {{event.name}}
H3 {{event.location}} H2建立新活动
标签(='名')名称:
输入(NG-模式='event.name') 标签(='位置')地点:
输入(NG-模式='event.location')
按钮(NG-点击='创建(事件))提交 脚本(SRC =的https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js')
脚本(SRC =的https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular-resource.js') 脚本(SRC ='JavaScript脚本/ app.js)
app.coffee:
应用程序= angular.module'应用',['ngResource']EventsFactory =($资源,$ Q) - GT;
URL =的http://本地主机:3000 /事件
资源= $资源(URL)
resourceWithId = $资源(#{URL} /:ID,{ID:'@id'}) 名单=() - GT;
递延= $ q.defer()
resource.get(
(事件) - GT;
deferred.resolve事件
,(响应) - >
deferred.reject响应
)
返回deferred.promise 创建=(事件) - GT;
递延= $ q.defer()
resource.save(
事件
,(响应) - >
deferred.resolve响应
,(响应) - >
deferred.reject响应
)
返回deferred.promise RET =
名单:名单
创造:创造
RET回报app.factoryEventsFactory',EventsFactory
EventController =($范围,EventsFactory) - >
$ scope.list =() - GT;
EventsFactory.list()。然后(
(事件) - GT;
回到事件
,(响应) - >
响应的console.log
)
$ scope.events = $ scope.list() $ scope.create =(事件) - GT;
EventsFactory.create(事件)。然后(
(响应) - >
的console.log'成功',响应
,(响应) - >
的console.log失败,响应
)
app.controllerEventController',EventController
我收到以下错误:
GET HTTP://本地主机/事件angular.js:10419
(匿名函数)angular.js:10419
sendReq angular.js:10241
$ http.serverRequest angular.js:10018
wrappedCallback angular.js:7509
wrappedCallback angular.js:7509
(匿名函数)angular.js:7582
。$范围的eval angular.js:8926
范围$消化angular.js:8789
范围$适用angular.js:9012
(匿名函数)angular.js:1004
调用angular.js:2925
resumeBootstrapInternal angular.js:1002
引导angular.js:1017
angularInit angular.js:977
(匿名函数)angular.js:16872
触发angular.js:1812
(匿名函数)angular.js:2052
的forEach angular.js:148
事件处理程序
我在做什么错了?
编辑:使用/事件以代替localhost:3000 /事件给了我以下错误:
类型错误:对象#<资源与GT;没有方法'推'
在副本(https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:616:21)
在https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular-resource.js:484:17
在wrappedCallback(https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:7509:59)
在wrappedCallback(https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:7509:59)
在https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:7582:26
在Object.Scope。$的eval(https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:8926:28)
在Object.Scope。$摘要(https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:8789:23)
在Object.Scope。$应用(https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:9012:24)
在完成(https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:10265:45)
在completeRequest(https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:10449:7)angular.js:6349
解决方案
您想 resource.query()
不是 resource.get()
。 查询()
检索结果( IsArray的:真正的
)的列表,而的get()
检索单个对象。在这种情况下,获取
不是HTTP方法,但更类型检索操作的
My Angular app has the following code:
index.jade:
doctype 5
html
head
body(ng-app='app')
div(ng-controller='EventController')
div(ng-repeat='event in events')
h2 {{event.name}}
h3 {{event.location}}
h2 Create new event
label(for='name') Name:
input(ng-model='event.name')
label(for='location') Location:
input(ng-model='event.location')
button(ng-click='create(event)') Submit
script(src='https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js')
script(src='https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular-resource.js')
script(src= 'javascripts/app.js')
app.coffee:
app = angular.module 'app', ['ngResource']
EventsFactory = ($resource, $q)->
url = 'http://localhost:3000/events'
resource = $resource(url)
resourceWithId = $resource("#{url}/:id", {id: '@id'})
list = ()->
deferred = $q.defer()
resource.get(
(events)->
deferred.resolve events
,(response)->
deferred.reject response
)
return deferred.promise
create = (event)->
deferred = $q.defer()
resource.save(
event
,(response)->
deferred.resolve response
,(response)->
deferred.reject response
)
return deferred.promise
ret =
'list': list
'create': create
return ret
app.factory 'EventsFactory', EventsFactory
EventController = ($scope, EventsFactory)->
$scope.list = ()->
EventsFactory.list().then(
(events)->
return events
,(response)->
console.log response
)
$scope.events = $scope.list()
$scope.create = (event)->
EventsFactory.create(event).then(
(response)->
console.log 'success', response
,(response)->
console.log 'failure', response
)
app.controller 'EventController', EventController
I'm getting the following error:
GET http://localhost/events angular.js:10419
(anonymous function) angular.js:10419
sendReq angular.js:10241
$http.serverRequest angular.js:10018
wrappedCallback angular.js:7509
wrappedCallback angular.js:7509
(anonymous function) angular.js:7582
Scope.$eval angular.js:8926
Scope.$digest angular.js:8789
Scope.$apply angular.js:9012
(anonymous function) angular.js:1004
invoke angular.js:2925
resumeBootstrapInternal angular.js:1002
bootstrap angular.js:1017
angularInit angular.js:977
(anonymous function) angular.js:16872
trigger angular.js:1812
(anonymous function) angular.js:2052
forEach angular.js:148
eventHandler
What am I doing wrong?
edit: using /events instead of localhost:3000/events gives me the following error:
TypeError: Object #<Resource> has no method 'push'
at copy (https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:616:21)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular-resource.js:484:17
at wrappedCallback (https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:7509:59)
at wrappedCallback (https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:7509:59)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:7582:26
at Object.Scope.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:8926:28)
at Object.Scope.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:8789:23)
at Object.Scope.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:9012:24)
at done (https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:10265:45)
at completeRequest (https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js:10449:7) angular.js:6349
解决方案
You want resource.query()
not resource.get()
. query()
retrieves a list of results (isArray: true
) while get()
retrieves a single object. In this case, get
isn't the HTTP method but more the type of retrieval operation.
这篇关于AngularJS:应用程序无法从GET请求获取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文