AngularJS:应用程序无法从GET请求获取数据 [英] AngularJS: app not getting data from get request

查看:192
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆