2013-10-08 71 views
0

我的角的應用程序有以下代碼:AngularJS:應用程序無法從GET請求獲取數據

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 

我越來越出現以下錯誤:

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 

什麼我做錯了嗎?

編輯:使用/事件以代替localhost:3000 /事件給了我以下錯誤:

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 
+0

你可以嘗試切換url ='http:// localhost:3000/events'到url ='/ events'嗎?走着瞧吧。 –

+0

,給我另一個錯誤。我已經更新了這個問題來反映這一點。 – tldr

+0

呼叫到/ events的服務器有效載荷是什麼? – ivarni

回答

1

你想resource.query()resource.get()query()檢索結果列表(isArray: true),而get()檢索單個對象。在這種情況下,get不是HTTP方法,而是更多的檢索操作的類型。

+0

工作,謝謝! – tldr

相關問題