如何使用angular.js web api将api调用controller.js发送到service.js?

时间:2017-03-09 06:19:10

标签: angularjs asp.net-web-api

我想在我的demo.i am中发送api调用controller.js给demo.js演示用户列表,我用于带有web api的angularjs数据表。我的结构是app.js,controller.js, service.js使用了这个3个单独的文件。 然后我想发送呼叫service.js。

这是我简单的controller.js代码运行良好。

app.controller('userscontroller', ['$scope', '$http', 'DTOptionsBuilder', 'DTColumnBuilder', 'userservice',
function ($scope, $http, DTOptionsBuilder, DTColumnBuilder, userservice) {

    $scope.dtColumns = [
        DTColumnBuilder.newColumn("fullName", "Full Name").withOption('name', 'firstname'),            
        DTColumnBuilder.newColumn("email", "Email").withOption('name', 'email'),            
    ]

    $scope.dtoptions = dtoptionsbuilder.newoptions().withoption('ajax', {
        datasrc: "data",
        url: "/home/getuserlist",            
        type: "post",
        data: { 'type': "time"},            
    })
    .withoption('processing', true) 
    .withoption('serverside', true) 
    .withpaginationtype('full_numbers') 
    .withdisplaylength(10)
    .withoption('aasorting', [0, 'asc'])       

}])

这是我的service.js文件:

app.service('userservice', function ($http) {});

任何人都知道如何使用service.js调用此api调用,请告诉我。

1 个答案:

答案 0 :(得分:0)

根据您的评论,您可以这样做:

您的用户服务:

app.service('userservice', ['$http', '$q', function ($http, $q) {

  function getuserlist(data){
    var defer = $q.defer();
    $http.post('/home/getuserlist', data)
    .then(function(result){
       defer.resolve(result.data);
    }); 
    return defer.promise;
  }

  return {
    getUsers: getuserlist
  };
}]);

然后,在您的控制器中,您可以使用fromFnPromise功能,如下所示:

vm.dtOptions = DTOptionsBuilder.fromFnPromise(function() {
        return userservice.getUsers(data);
    })
    //rest of your options

您可以在此link上找到有关fromFnPromise方法的更多详细信息。