2015-06-08 19 views
0

繼提示在 Best practice of RestAngular,我試圖按照建議(Restangular服務 - 工廠exampleService),它不工作。RESTAngular與工廠方法是行不通的

以下源代碼包含兩個部分之一。沒有角度工廠,這是有效的。並與廠運行不正常:

<html ng-app="angularexample"> 
    <head> 
     <script src="https://code.angularjs.org/1.3.14/angular.min.js"></script> 
     <script src="https://code.angularjs.org/1.3.14/angular-route.min.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/restangular/1.5.1/restangular.min.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 

     <script src="script.js"></script> 

    </head> 
    <body> 
     <div ng-Controller='MainCtrl'> 
      <div ng-repeat="user in users"> 
       Name : {{user.name}}<br> 
       Age : {{user.age}}<br> 
       ID : {{user.id}}<br> 
       Change name:<input type="text" ng-model="user.name"/><button type="submit" ng-click="user.put()">Update</button><br/> 
       Remove ID:<input type="text" ng-model="user.id"/><button type="submit" ng-click="user.remove()">Delete</button><br/> 
      </div> 
      <div> 
       add new: <br/> 
       Name : <input type="text" ng-model="newUser.name"/><br/> 
       Age : <input type="text" ng-model="newUser.age"/><br/> 
       <button type="submit" ng-click="add()">add</button> 
      </div>      
     </div> 
     <div ng-Controller='ExampleCtrl'> 

      My Title {{title}} <br/> 
      <div ng-repeat="user in examples"> 
       Name : {{user.name}}<br> 
       Age : {{user.age}}<br> 
       ID : {{user.id}}<br> 
       Change name:<input type="text" ng-model="user.name"/><button type="submit" ng-click="user.put()">Update</button><br/> 
       Remove ID:<input type="text" ng-model="user.id"/><button type="submit" ng-click="user.remove()">Delete</button><br/> 
      </div> 
      <div> 
       add new: <br/> 
       Name : <input type="text" ng-model="newUser.name"/><br/> 
       Age : <input type="text" ng-model="newUser.age"/><br/> 
       <button type="submit" ng-click="add()">add</button> 
      </div>      
     </div>   
    </body> 
</html> 

http://plnkr.co/edit/y22aBpcUwV1btrKB5jVM?p=preview

以下是錯誤的屏幕:我的REST服務不託管

http://i57.tinypic.com/334rfqu.jpg

工作參考合照。然而,我的REST服務只有兩個字段 - 名稱和年齡。

/** 
* User.js 
* 
* @description :: This is the sample Model for Sails JS to create REST API. 
* @docs  :: http://sailsjs.org/#!documentation/models 
*/ 
module.exports = { 
    attributes: { 
     name : { 
      type : 'string' 
     }, 
     age : { 
      type : 'integer' 
     } 
    } 
}; 

在我的代碼中有什麼問題?我想遵循最佳實踐來構建一個大型應用程序。

+0

按照從這裏提示http://stackoverflow.com/questions/23801731/angularjs-consuming-rest-api-with-restangular-in-a-factory –

+0

http://plnkr.co/edit/mQnQ0fz8ovj78dU6cTOH? p =預覽是解決的例子,工作圖片在這裏。 http://i59.tinypic.com/s1mfck.jpg –

回答

0

代碼失敗,因爲您的服務方法不返回任何內容。更新它們如下:

// get examples from server by using Restangular 
function getExamples(){ 
    return Restangular.all('user').getList(); 
} 
+0

沒有測試過其他人的作品。稍後再試。問候, –

0

您所呼叫的然後方法,無需從工廠方法返回的相關承諾,應返回的承諾,就像

  // get examples from server by using Restangular 
      function getExamples(){ 
       return Restangular.all('user').getList(); 
      } 

      // get example with given id from server by using Restangular 
      function getExample(exampleId){ 
       return Restangular.one('user', exampleId).get(); 
      } 

現在的方法將會使請求並返回相關承諾,您可以在其中調用然後方法。