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

Jquery 如何在angularjs中从工厂调用ajax?,jquery,ajax,angularjs,Jquery,Ajax,Angularjs,我试图从工厂调用ajax,但它没有返回任何信息。我的代码如下 var msfaWebPortal = angular.module('MsfaWebPortal', []) .factory('personFactory', function () { var factory = {}; var people = []; $.ajax({ url: '@Url.Action("Get

我试图从工厂调用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来拨打这些电话

此外,如果您的Personal资源是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上,它可以获取个人信息,可以发布新的个人信息,可以更新个人信息并删除个人信息。

为什么不使用Angulars的模块进行此操作?对不起。。。。。“我不明白你的问题?”zladuricI的意思是,angular提供了一个$http来进行Ajax调用。此外,在工厂或服务中,您可以使用$resource自动映射整个RESTful端点。请访问任何教程链接。好啊或者他们的API,比如或者如何将成功回调中接收到的数据传递给控制器,以将其添加到作用域中?例如,由于$http由angular提供,其成功回调可以访问$scope,angular将在更改时对其进行消化。所以,只需执行一个$http.get(url.success)(函数(数据){$scope.something=data;})是的,但只有在控制器中调用$http时才能执行此操作。。。你不能在工厂里访问$scope?!或者我误解了$scope的作用。无论如何,我最终向我的工厂方法添加了一个参数“callback”,由$http.success调用,并在我的controllerWell中实现。是的,如果在工厂中调用$http,则范围不存在。但您可以将其作为参数传入,尽管这取决于用例。是的,当ng route模块正在使用时。正如我所说的,这取决于用例。
var app = angular.module('myApp', []).... /* setup app */
app.personsFactory = angular.factory('personsFactory', function($resource) {
  var persons = $resource('/api/persons/:id', {id: '@id'});
  return persons;
});