当服务器位于不同的本地主机上时如何使用 ngResource?

How to use ngResource when server is on a different localhost?

我正在使用 Ionic 和 MEAN 堆栈构建应用程序。我的快速服务器 运行ning localhost:3000 而我的 Ionic public 代码 运行ning localhost:8100。根据我的研究,Ionic 似乎可以 运行 在与服务器不同的 IP 地址上,并且应该只使用 ngResource 发送 $http 请求。

所以我在 server.js

中有一个像这样的 RESTful 端点
router.get('/', function(req, res){
  res.json({"name":"Abdul"});
});

在 Ionic 客户端代码中,我发送这样的请求:

app.controller('mainCtrl', function($scope, $resource){
    $scope.test = $resource('localhost:3000/');
    $scope.test_button = function(){
        console.log($scope.test);
    }
});

但是当我单击 test_button,而不是 [{"name":"Abdul"}] 在控制台中登录时,我收到以下空消息:

function Resource(value) {
     shallowClearAndCopy(value || {}, this);
}

谁能帮我连接客户端和服务器?

$resource对象只会创建具有getsaveupdate等的对象,所以调用server的get方法,需要调用get $resource 对象的方法。该方法将为 return $promise 对象提供承诺。您可以在其上放置 .then 承诺,您将在其中获取成功函数中的数据。

还有一件事是,当您从服务器 returning 数据时,您是 returning 数组格式的对象。因此,在这种情况下,您需要通过在 isArray: true 选项中指定 get 方法来 return 数组。

$scope.test = $resource('http://localhost:3000/', {}, {get: { isArray: true}});
$scope.test.get().$promise.then(function(data){ //success function
   $scope.test = data;
},function(error){ //error function
   console.log(error);
})

为了使您的应用程序更好,您可以将 $resource 对象上移到 service/factory 以使该调用可重用。

app.service('dataService', function($resource){
   var resourceUrl = $resource('http://localhost:3000/', {}, {get: { isArray: true} });
   this.getData = function(){
      return resourceUrl.get().$promise;
   };
})

控制器

app.controller('mainCtrl', function($scope, dataService){
    $scope.test_button = function(){
       dataService.getData().then(function(data){ //success function
           $scope.test = data;
       },function(error){ //error function
           console.log(error);
       })
    }
});