发送Restangular POST后如何获取响应对象?
firstAccount.post("Buildings", myBuilding).then(function() {
console.log("Object saved OK");
}, function() {
console.log("There was an error saving");
});
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取新的对象ID.
谢谢.
我在AngularJS应用程序中使用Restangular.我有一个表,每个项目都有一个删除链接.我想删除该项目并自动删除该行.但事情是它只从DB中删除.我如何重构事物以便DOM自动更新?
// The controller
angular.module('myApp').controller('ManageCtrl', function($scope, Restangular) {
$scope.delete = function(e) {
Restangular.one('product', e).remove();
};
Restangular.all('products').getList({}).then(function(data) {
$scope.products = data.products;
$scope.noOfPages = data.pages;
});
});
// The view
<li ng-repeat="product in products">
<a href="#" ng-click="delete(sheet._id)"></a>
</li>
Run Code Online (Sandbox Code Playgroud)
我也很想找到一个这样的例子 - 即使使用Angular资源.所有管理/数据表演示似乎都来自静态数据.
我正在谷歌搜索,但我没有找到任何线索
if restangular支持withcredentials选项和cors请求的其他选项.
我的意思是我可以在没有任何问题的情况下在cors电话中使用它吗?
你能帮我吗 ?
是否可以使用Restangular与2个不同的API?我想两者都有setBaseUrl().
我有一个restangular的问题.这段代码:
Restangular.one("undefined_ressource").get().then(
function(res){
console.log("success", res.code);
},
function (res) {
console.log("fail", res.code);
}
);
Run Code Online (Sandbox Code Playgroud)
试图获取http://api.local.com/undefined_ressource不退出的网址.我的服务器按预期返回404,但永远不会触发失败日志.Intead它会成功回调并记录"success 404"到控制台.
Angular version 1.2.15
Restangular version 1.3.1
Run Code Online (Sandbox Code Playgroud)
任何帮助都会受到欢迎!谢谢
我有一个解耦的Restangular服务,我想附加一个自定义方法.看来,唯一的方法,在默认情况下收集回来的getList,one和post.我想要做Locations.getLongLat()
我已经尝试将以下内容添加到我的服务中,但没有运气(该方法没有绑定到对象),我只是undefined is not an object回应了.
angular.module('myApp')
.factory('Locations', function (Restangular) {
return Restangular.withConfig(function (RestangularConfigurer) {
RestangularConfigurer.addElementTransformer('api/v1/locations', true, function (location) {
location.addRestangularMethod('getLongLat', 'get', 'longlat');
return location;
});
}).service('api/v1/locations');
})
Run Code Online (Sandbox Code Playgroud)
有人有主意吗?
假设我按如下方式定义工厂:
angular.module('myServices').factory('TestService', ['Restangular',
function(restangular){
return restangular.withConfig(function(RestangularConfigurer) {
RestangularConfigurer.setBaseUrl('api');
RestangularConfigurer.setRestangularFields({ id: 'Id'});
};
}).all('Job');
}]);
Run Code Online (Sandbox Code Playgroud)
我希望能够编写单元测试来确认我baseUrl和该id字段已正确设置.这可能吗?我知道我可以查看.route我的服务上的属性路线,但不包括baseUrl.
我正在使用AngularJS v1.2.16和Restangular v1.4.0,并想知道是否可以覆盖ErrorInterceptor.如果有,怎么样?如果不是,我该如何解决?
我已经配置了一个错误拦截器,如下所示:
RestangularProvider.setErrorInterceptor(
function ( response ) {
if ( response.status == 401 ) {
dialogs.error("Unauthorized - Error 401", "You must be authenticated in order to access this content.")
.result.then( function () {
$location.path("/login");
});
}
else {
// Some other unknown Error.
console.log( response );
dialogs.error(response.statusText + " - Error " + response.status,
"An unknown error has occurred.<br>Details: " + response.data);
}
// Stop the promise chain.
return false;
}
);
Run Code Online (Sandbox Code Playgroud)
然后,在另一个地方,我进行了一个错误处理的POST调用.
function …Run Code Online (Sandbox Code Playgroud) 在网页上安装SSL证书后,我遇到了使用https服务的页面需要带有ajax的http端点的问题.我正在使用restangular,我更改了基本网址以使用https.
var uri = location.protocol + "//" + location.host;
RestangularProvider.setBaseUrl(uri);
Run Code Online (Sandbox Code Playgroud)
有趣的是,当我看到chrome开发人员工具中的请求时,我看到了
Request URL:https://theaddress.com/api/endpoint
Request Headers
Provisional headers are shown
Accept:application/json, text/plain, */*
Referer:https://theadress.com/somepage
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36
X-Requested-With:XMLHttpRequest
Run Code Online (Sandbox Code Playgroud)
所以请求应该是https,但我仍然得到:
Mixed Content: The page at 'https://theaddress.com/somepage' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://theadress.com/api/endpoint'. This request has been blocked; the content must be served over HTTPS.
Run Code Online (Sandbox Code Playgroud)
另外我应该提一下,这发生在prod服务器上,但是在我的本地测试之后它工作正常(我有自签名的ssl证书)之后我使用了包含https的基本网址.
可能是什么问题呢?
官方的restangular文档提供此代码示例以在ErrorInterceptor中重试请求:
var refreshAccesstoken = function() {
var deferred = $q.defer();
// Refresh access-token logic
return deferred.promise;
};
Restangular.setErrorInterceptor(function(response, deferred, responseHandler) {
if(response.status === 403) {
refreshAccesstoken().then(function() {
// Repeat the request and then call the handlers the usual way.
$http(response.config).then(responseHandler, deferred.reject);
// Be aware that no request interceptors are called this way.
});
return false; // error handled
}
return true; // error not handled
});
Run Code Online (Sandbox Code Playgroud)
但是,正如它在评论中所说,第二次尝试不会触发任何拦截器,因为它直接使用$ http.
有没有办法让第二个请求也通过Restangular管道并执行ErrorInterceptor?