【问题标题】:No data returned in consuming REStful web service using Angularjs使用 Angularjs 使用 RESTful Web 服务时没有返回数据
【发布时间】:2014-05-04 20:24:51
【问题描述】:

我是初学者学习Angularjs。请帮助我提供以下示例

添加了脚本

javascript -

var app = angular.module('myapp', []);

app.controller('MyCtrl1', ['$scope', 'UserFactory', function ($scope, UserFactory) {
UserFactory.get({}, function (userFactory) {
    $scope.time = userFactory.time;
})
}]);
var service = angular.module('apiService', ['ngResource']);

service.factory('UserFactory', function ($resource) {
return $resource('http://time.jsontest.com', {}, {
    query: {
        method: 'GET',
        params: {},
        isArray: true
    }
})
});

.html 文件

<body ng-app="myapp">
<divng-controller="MyCtrl1" >
<p>
    Result from RESTful service is: {{ time }}
</p>
</div>
</body>

sn-p 上面给出的输出为

RESTful 服务的结果是:{{time}}

而不是我期望的值 ..参考:http://draptik.github.io/blog/2013/07/13/angularjs-example-using-a-java-restful-web-service/

我想编写 CRUD 方法 (GET/POST/PUT/DELETE),我已经开始使用 GET。

谢谢

【问题讨论】:

  • 你能不能把一个plnkr放在一起(plnkr.co)?或者至少是更完整的代码示例。我怀疑您没有在此处发布的代码有问题,否则 javascript 看起来不错
  • 你把你的 ng-app="myapp" 指令放在哪里了?
  • 抱歉编辑晚了。它在正文标签中

标签: angularjs crud restful-url angularjs-service angularjs-controller


【解决方案1】:

您需要确保您的主应用模块注入您的服务。在您的 plnkr 中,您有:

var app = angular.module('myapp', []);

你真正应该拥有的地方:

var app = angular.module('myapp', ['apiService']);

这可确保将服务模块注入您的应用程序模块,并且您可以使用您在该模块中定义的 UserFactory。对于这个简单的案例,您也可以简单地在“myapp”模块上定义 UserFactory 工厂

【讨论】:

  • 能否请您发送链接以获得相同的 CRUD 方法的好教程?
【解决方案2】:

它非常接近,但您的应用实例化有一个小错误。应该是这样的:

var app = angular.module('myapp', [ 'apiService' ]);

我还看到了其他几个问题,但有一件事是我通常对异步请求执行以下操作

var promise = UserFactory.get({}).$promise; 
promise
   .then( function(response) {
     $scope.time = userFactory.time;
   });

编辑:以下是给定 ReST 服务的命名方法示例:

return $resource('/api/v2.0/user/lists/:listId',
    {},
    {

        // POST - list create/product addition to list
        'addProduct': {
            method: 'POST',
            isArray: false,
            params: {
                listId: '@listId',
                productId: '@productId'
            }
        },
        'createList': {
            method: 'POST',
            isArray: false,
            params: {
                listName: '@listName'
            }
        },

        // GET - list of user lists/list details
        'readLists': {
            method: 'GET',
            isArray: false,
            params: {}
        },
        'readListsWithProductId': {
            method: 'GET',
            isArray: false,
            params: {
                productId: '@productId'
            }
        },
        'readListById': {
            method: 'GET',
            isArray: false,
            params: {
                listId: '@listId',
                sort: '@sort',
                flags: true,
                extendedInfo: true,
                rows: '@rows',
                start: '@start'
            }
        },

        // PUT - list renaming
        'renameList': {
            method: 'PUT',
            isArray: false,
            params: {
                newName: '@listName',
                listId: '@listId'
            }
        },

        // DELETE - list deletion/clear/product removal
        'removeProduct': {
            method: 'DELETE',
            isArray: false,
            params: {
                listId: '@listId',
                productId: '@productId'
            }
        },
        'clearList': {
            method: 'DELETE',
            isArray: false,
            params: {
                listId: '@listId',
                clear: true
            }
        },
        'deleteList': {
            method: 'DELETE',
            isArray: false,
            params: {
                listId: '@listId'
            }
        }
    });

你可以像下面这样访问它:

Factory.[methodName](payload)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 2015-02-20
  • 2014-01-11
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多