当服务器位于不同的本地主机上时如何使用 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
对象只会创建具有get
、save
、update
等的对象,所以调用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);
})
}
});
我正在使用 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
对象只会创建具有get
、save
、update
等的对象,所以调用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);
})
}
});