jquery - 如何在 angularjs 中从工厂调用 ajax?

标签 jquery ajax angularjs

我正在尝试从工厂调用 ajax,但它不会返回任何内容。我的代码如下

var msfaWebPortal = angular.module('MsfaWebPortal', [])
       .factory('personFactory', function () {
           var factory = {};

           var people = [];

           $.ajax({
               url: '@Url.Action("GetPerson","Home")',
               success: function (data) {
                   people = data;
               }
           });

           factory.getPerson = function () {
               return people;
           };
           return factory;
       })
    .controller('PersonCtrl', function ($scope, personFactory) {
        $scope.friends = personFactory.getPerson();
        $scope.predicate = '-age';
    });

我错过了什么吗?或者我该怎么做?请帮助我。

最佳答案

您应该使用 Angulars 的 $http 来进行这些调用。

即。

var app = angular.module('myApp', []).config(/* config stuff */ );
app.PersonFactory = angular.factory('PersonResource', function($http) {
  /* your code here */
  /* when you want to make Ajax calls, use $http */
  $http.get('/some/url/to/persons')
     .success(function (response) {...})
     .error(function(err){...});
  /* keep going */
});

此外,如果您的 Persons 资源是 RESTful,您可以只使用 $resource,即。

var app = angular.module('myApp', []).... /* setup app */
app.personsFactory = angular.factory('personsFactory', function($resource) {
  var persons = $resource('/api/persons/:id', {id: '@id'});
  return persons;
});

这样,Angular 就会知道,在您的/api/persons url 上,它可以获取人员,可以发布新人员,可以对人员进行更新并删除人员。

关于jquery - 如何在 angularjs 中从工厂调用 ajax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18400692/

相关文章:

javascript - 如何使用 jQuery 访问多级对象数据

jquery - 重绘openlayers矢量图层

javascript - 如何使用ajax get方法发送登录名和密码?

javascript - 准确跟踪由 $q.defer 调用的 Angular 的事件/完成 promise

javascript - 如何连接样式

javascript - 仅允许来自条形码扫描器的文本框输入并限制来自键盘的任何输入

javascript - 使用 ajax json 数据创建 highchart

jquery - 使用 Jquery 和 Ajax 的动画内容

jquery - Ajax get/posts 后 IE 不刷新

c# - 如何使用 MVC 自定义页面错误管理处理 angularjs HTTP 错误?