【问题标题】:RESTAngular with factory method is not working带有工厂方法的 RESTAngular 不起作用
【发布时间】:2015-06-08 23:31:00
【问题描述】:

按照 Best practice of RestAngular,我正在尝试遵循建议(Restangular Service - FactoryexampleService)但它不起作用。

以下源代码包括两部分一。没有 Angular 工厂,这行得通。并且使用不工作的工厂:

<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

这是错误屏幕:

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

工作参考被描绘为我的 REST 服务未托管。然而,我的 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'
        }
    }
};

我的代码中可能存在什么问题?我想遵循最佳实践来构建大型应用程序。

【问题讨论】:

标签: angularjs restangular


【解决方案1】:

代码失败,因为您的服务方法没有返回任何内容。更新它们如下:

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

【讨论】:

  • 还没有测试过这个,因为其他人的作品。稍后会尝试。问候,
【解决方案2】:

您正在调用 then 方法而不从您的工厂方法返回相关的承诺,您应该返回承诺,如

           // 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();
            }

现在这些方法将发出请求并返回关联的 Promise,您可以在该 Promise 上调用 then 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 2019-04-12
    相关资源
    最近更新 更多