标签: restangular

成功Restangular请求时访问HTTP状态代码

使用Restangular成功请求后,如何访问HTTP响应状态代码?

CoffeeScript示例

Restangular.all('orders').getList().then (result) ->
    console.log result  # no status code
    console.log 'Preferably, status code should be here: ', result.status
, (error) ->
    console.log 'Error status code: ', error.status  # this works
Run Code Online (Sandbox Code Playgroud)

我试图实现一个响应提取器来将其作为元数据添加,但状态代码在流入提取器时已被剥离.

http-status-codes coffeescript restangular

5
推荐指数
1
解决办法
3526
查看次数

Restangular,Django REST和关系

我正在使用Django REST Framework来建模使用大量模型关系的REST API.

使用AngularJS和Restangular在前端级别解决这些关系的简单方法是什么?

楷模

这就是我的模型的一部分:

class Country( Model ):
  name = CharField( max_length = 256 )

class City( Model ):
  name = CharField( max_length = 256 )
  postal_code = CharField( max_length = 16 )

  country = ForeignKey( "Country" )

class Customer( Model ):
  first_name = CharField( max_length = 256 )
  last_name = CharField( max_length = 256 )

  city = ForeignKey( "City" )
Run Code Online (Sandbox Code Playgroud)

获取数据

以下JavaScript代码显示了我如何加载数据:(我实际上使用了返回的promises all(),但是$object为了解释这个而更短)

$scope.countries = [];
$scope.cities = [];
$scope.customers = [];

Restangular.all( …
Run Code Online (Sandbox Code Playgroud)

django rest angularjs django-rest-framework restangular

5
推荐指数
1
解决办法
847
查看次数

从dirrenet主机重新发送403禁止错误或XMLHttpRequest错误

我写了这个简单的彗星实现

    var app = angular.module('App', ['restangular', 'Comet']);

app.config(function(RestangularProvider) {
    //RestangularProvider.setBaseUrl('http://localhost/my-rest-api/api/v1/');
    RestangularProvider.setBaseUrl('http://[private-ip]/my-rest-api/api/v1/');
    RestangularProvider.setDefaultHttpFields({timeout: 60*60*24});
});

var comet = angular.module('Comet', []);

comet.factory('CometService', ['Restangular', function(Restangular){
    var cometUrl = Restangular.all('comet');

    var asteroid = function(cometUrl, callback){
        cometUrl.post({user:"Username"}).then(function(data){
            callback(data.plain());
            asteroid(cometUrl,callback);
        })
    };

    return {
        getComet: function(callback){
            asteroid(cometUrl,callback);
        }
    }

}]);

app.controller('Ctrl', ['$scope', 'CometService', function($scope, CometService){
    function callback(data){
        console.log(data);
    }
    CometService.getComet(callback);
}]);
Run Code Online (Sandbox Code Playgroud)

它在localhost中很好用,但是如果从其他主机调用该API则不能。如果我不使用矩形,则相同的代码也可以正常工作。该API是使用Phalcon框架用PHP编写的,并且设置了所有CORS标头。所有目录都具有777权限。如果我直接在Restangular.all(url)中使用http:// [private-ip] / my-rest-api / api / v1 / comet url,并且XMLHttpRequest(OPTION Angular.js 9827)是403错误被应用加上了这段代码。

javascript php angularjs phalcon restangular

5
推荐指数
0
解决办法
263
查看次数

需要在函数中访问服务

我有一个服务(AuthService),我需要在我的restangularInit函数(在我的 app.module.ts 中)中访问它,但我不知道如何访问它,我无法访问它。

\n\n

我试图将它移动到 AppModule 类中,但到那时它\xc2\xb4s 已经晚了。

\n\n

调用服务功能,例如。getToken按预期工作。

\n\n
import { BrowserModule } from \'@angular/platform-browser\';\nimport { NgModule } from \'@angular/core\';\nimport { FormsModule } from \'@angular/forms\';\nimport { HttpModule } from \'@angular/http\';\nimport { MaterialModule } from \'@angular/material\';\nimport { FlexLayoutModule } from "@angular/flex-layout";\nimport { RestangularModule } from \'ng2-restangular\';\n\n// Components\nimport { AppComponent } from \'./app.component\';\nimport { ProductComponent } from \'./components/product/product.component\';\n\n// Services\nimport { AuthService } from \'./services/auth.service\';\n\nexport function restangularInit(RestangularProvider, AuthService) {\n  console.log(AuthService); // this is undefined\n  let token = …
Run Code Online (Sandbox Code Playgroud)

restangular angular2-services angular

5
推荐指数
1
解决办法
4116
查看次数

在AngularJS中包含模块的正确方法

我正在学习Angular,我试图以这种方式包含Restangular:

var app = angular.module('myapp',['restangular']);
app.controller('UsersController', ['$scope', function ($scope, Restangular) {
   ...
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用Restangular:

var data = Restangular.all('someurl');
Run Code Online (Sandbox Code Playgroud)

这里我得到一个错误:Restangular未定义.根据文档,这应该很简单:

// Add Restangular as a dependency to your app
angular.module('your-app', ['restangular']);

// Inject Restangular into your controller
angular.module('your-app').controller('MainCtrl', function($scope, Restangular) {
  // ...
});
Run Code Online (Sandbox Code Playgroud)

但是我无法让它工作.是什么赋予了?

dependency-injection angularjs restangular

4
推荐指数
1
解决办法
2万
查看次数

restAngular使用方法customPOST.text:[object%20Object]被添加到URL的末尾

我想要完成的目标是在restAngular中做一个帖子.我一直在尝试下面的代码,但是我收到了一个带有customPost的状态代码400.这是我发送请求的URL ... http://localhost/api/api/index.php/auth/token/ [object%20Object].正如您所看到的,[object%20Object]正在添加gettting.我怎么摆脱这个?我应该在customPOST之外做另一种方法吗?为什么要添加这个?

  var login = Restangular.one('auth/token').customPOST(
    {grant_type:"password", username:"b@t.com",password:"666666",scope:"app"},{},{},
    {Authorization:'Basic ' + client,
    ContentType:'application/x-www-form-urlencoded'});
Run Code Online (Sandbox Code Playgroud)

angularjs restangular

4
推荐指数
1
解决办法
1万
查看次数

AngularJS:承诺,你可以在使用.then()之后传回一个承诺吗?

我还是Angular的新手并承诺所以我希望我在这里有正确的想法.

我目前有一个数据层服务,它使用restangular来获取一些数据,然后返回一个promise,就像这样......

dataStore.getUsers = function (params) {
    return users.getList(params);
};
Run Code Online (Sandbox Code Playgroud)

然后,我调用此函数的控制器会收到一个承诺,就像这样......

$dataStore.getUsers(params).then(function (response) {
    $scope.users = response;
}, function(response) {
    $log.error("Get users returned an error: ", response);
});
Run Code Online (Sandbox Code Playgroud)

这很好用,但我想在传回数据存储之前使用我的数据存储区内的promise.我想使用.then()方法检查它是否失败并进行一些日志记录,然后,从sucess函数和失败函数我想将原始的promise返回给我的控制器.

然后,我的控制器可以像现在一样使用.then()方法,事实上,我不希望我的控制器代码完全改变,只是我的数据存储区代码.

这里有一些半伪代码来显示我想要的数据存储功能...

dataStore.getUsers = function (params) {

    users.getList(params).then(function (response) {
        $log("server responded")
        return original promise;
    }, function(response) {
        $log.error("server did not respond");
        return original promise;
    });

};
Run Code Online (Sandbox Code Playgroud)

javascript promise angularjs restangular angular-promise

4
推荐指数
1
解决办法
1565
查看次数

RestAngular:put和customPUT正在发送旧对象,而不是更新的对象

当我在浏览器中调用putcustomPUT检查请求主体时,将发送原始对象,而不是更新的对象.我检查了该RestAngular对象{{ object }},它被更新.

这是控制器(APIUsers是一个RestAngular服务):

$scope.objects = {};
(function waitForNgInit(fnct) {
    $scope.$watch('userID', function(newVal) {
        if (newVal !== undefined) {
            fnct();
        }
    });
})(function retrieveUser() {
    $scope.objects.user = APIUsers.one($scope.userID).get().$object;
});

$scope.saveSettings = function() {
    $scope.objects.user.customPUT($scope.objects.user).then(function(resp) {
        $scope.errors = [];
    }, function(err) {
        console.log(err.data);
        $scope.errors = err.data.errors;
    });
};
Run Code Online (Sandbox Code Playgroud)

这是Jade(HTML模板代码):

div.user-settings.form-section(ng-controller="userSettingsFormController")
    {{ objects }}
    ul.error-box(ng-show="errors != undefined && errors.legnth != 0")
        li(ng-repeat="error in errors") {{ error.msg }}
    .form-group
        label(for="username") …
Run Code Online (Sandbox Code Playgroud)

javascript rest angularjs restangular

4
推荐指数
1
解决办法
4172
查看次数

如何对集合中的项目进行Restangularize离开父对象

我在AngularJS上使用Restangular返回一个对象(GPT对象是被返回的父对象),返回的数组对应于带有GPT的项目.

我可以在父GPT对象上执行所有Restangular"stuff",例如save()等.但是,当我在"projects"集合中获得对单个项目的引用时,我无法对其执行Restangular save().如何确保在主对象下面的集合中返回的所有项目都是"Restangularised",以便我可以对它们执行休息操作?即如果没有意义,我想我想要一个"深度Restangularisation"; - )...如果没有,我如何在尝试执行save()操作并为PUT/POST提供相关URL之前对一个实例进行Restangularize等等

希望这是有道理的.

问候

一世

angularjs restangular

4
推荐指数
1
解决办法
1480
查看次数

防止IE缓存AngularJS/Restangular

在IE中,当我更新或销毁列表中的项目时,操作成功,但更新的列表/数据不会从服务器返回,因此列表未在视图中更新.

我试过以下无济于事:

angular.module('casemanagerApp')
.config(function($stateProvider, $urlRouterProvider, RestangularProvider) {

  if (!RestangularProvider.setDefaultHeaders) {
    RestangularProvider.setDefaultHeaders({});
  }

  RestangularProvider.setDefaultHeaders({'If-Modified-Since': 'Mon, 26 Jul 1997 05:00:00 GMT'});
  RestangularProvider.setDefaultHeaders({'Cache-Control': 'no-cache'});
  RestangularProvider.setDefaultHeaders({'Pragma': 'no-cache'});

  $stateProvider

  ...
});
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的解决方案吗?

angularjs restangular

4
推荐指数
1
解决办法
1329
查看次数