标签: restangular

如何使用AngularJS和Restangular返回/编辑REST资源

对AngularJS 使用Restangular,继续从Mongolab获取对象对象.

我确定它与Promise有关,但不确定如何使用/实现这些来自旧的Java OO体验.

(旁注,就像Eloquent Javascript,一些书或资源有助于我理解'新'Javascript风格?)

小型网络应用程序适用于残疾学生,用于输入/编辑学生,更新他们放学后的时间,然后每周为他们的父母/看护人输出报告.

这是在弹出新表单时返回undefined的代码(AngularJS Boostrap UI模式)

我个人认为Restangular和文档是一个很好的补充,所以希望它不会劝阻别人 - 这只是我不太了解.

提前致谢

app.js ...

$scope.editStudent = function(id) {
    $scope.myStudent = Restangular.one("students", id);
    console.log($scope.myStudent);
}
Run Code Online (Sandbox Code Playgroud)

mlab angularjs restangular

3
推荐指数
1
解决办法
9474
查看次数

从Angular Promise获取数据

我试图得到MotorRestangular.all('Motors').getList()分配给变量的响应,a以便我以后可以使用它.问题是,如果我尝试访问a我的return函数内部,它是未定义的.我知道这不是完成我需要的正确方法,但我不知道如何以其他方式做到这一点.

myApp.factory('Configurations', function(Restangular, MotorRestangular) {
  var a;
  var Motors = function() {
    MotorRestangular.all('Motors').getList().then(function(Motors){
      a = Motors;
    }); 
  }



  return {
    config: function(){
      Motors();
      console.log(a);
      var g = _.groupBy(Motors, 'configuration');
      console.log(g);
      var mapped = _.map(g, function(m) {
        return {

            id: m[0].configuration,
            configuration: m[0].configuration,
            sizes: _.map(m, function(a) {return a.sizeMm})
      }});
    }
  }

});
Run Code Online (Sandbox Code Playgroud)

javascript promise angularjs restangular

3
推荐指数
1
解决办法
2446
查看次数

Restangular PUT不在请求中附加id

我有一个使用Restangular的AngularJS App在Rails 4 API之上进行持久化.我遇到的问题是我的更新无法正常工作.

我的代码在routeProvider:

when('/course/edit/:courseId', {
  controller: 'CourseEdit',
  templateUrl: '/assets/templates/course/form.html',
  resolve: {
    course: function(Restangular, $route) {
      return Restangular.one('courses', $route.current.params.courseId).get();
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

我的控制器功能:

function CourseEdit($scope, $location, course) {
  $scope.course = course;
  $scope.save = function() {
    $scope.course.put().then(function() {
      $location.path('/course/view/' + $scope.course.id);
    });
  };
}
Run Code Online (Sandbox Code Playgroud)

PUT的请求正在http://mysite.com/courses而不是http://mysite.com/courses/id

就像我预期的那样,我似乎无法弄明白为什么.

rails抛出的错误是'No route matches [PUT] "/courses".

任何帮助将不胜感激.

ruby-on-rails angularjs restangular

3
推荐指数
1
解决办法
935
查看次数

AngularJS - 模板不起作用

我使用Restangular来创建一个使用MEAN堆栈的简单API.

这是我的代码:

的index.html

<!DOCTYPE html>

<html data-ng-app="scotchTodo">
<head>
    <!-- META -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1"><!-- Optimize mobile viewport -->

    <title>Node/Angular Todo App</title>

    <!-- SCROLLS -->
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"><!-- load bootstrap -->
    <style>
        html{
            overflow-y:scroll;
        }
        body{
            padding-top:50px; 
        }
    </style>    

    <!-- SPELLS -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular-route.min.js"></script>

    <script src="//cdnjs.cloudflare.com/ajax/libs/restangular/1.4.0/restangular.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js"></script>

    <script src="app.js"></script>
</head>
<body>
    <div data-ng-view>

    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

app.js

var scotchTodo = angular.module('scotchTodo', ['restangular','ngRoute']);

//config
scotchTodo.config(['$routeProvider','$locationProvider', function($routeProvider, $locationProvider) {

    $routeProvider
    .when('/',{
        templateUrl: 'list.html',
        controller: 'ListController' …
Run Code Online (Sandbox Code Playgroud)

templating angularjs route-provider restangular mean-stack

3
推荐指数
1
解决办法
6467
查看次数

Restangular Spinner

app.config(function(RestangularProvider) {        
    RestangularProvider.addRequestInterceptor(function(element) {
        console.log("Request started");
        return element;
    });

    RestangularProvider.addResponseInterceptor(function(data) {
        console.log("Request returned");

        return data;
   });
});
Run Code Online (Sandbox Code Playgroud)

我正在试图弄清楚如何在请求进行时创建一个微调器.我怀疑这通常是通过显示请求何时开始,并在请求完成时隐藏它来完成的.

我怎么能用Angular和Restangular做到这一点?我有拦截器设置如上,但这是在.conifg(),所以我无法访问$ rootScope或任何东西来跟踪任何div的可见性.

javascript angularjs restangular

3
推荐指数
1
解决办法
1946
查看次数

'Access-Control-Allow-Origin'标头包含多个值-nginx + sails.js

我正在使用Chrome浏览器浏览两个域:

一切都由nginx提供。

我收到以下错误:

XMLHttpRequest无法加载http://db.localhost:909 / matches“ Access-Control-Allow-Origin”标头包含多个值“ *”,但只允许一个。因此,不允许访问源' http://vb.localhost:909 '。

这是两个服务器块的nginx.conf:

 server {
   listen       909;
   server_name  vb.localhost;     

   location / {
       root   "\apps\vb-site\UI\dev";
       index  index.html;
   }
}
server {
   listen 909;
   server_name  db.localhost;
   add_header Access-Control-Allow-Origin *;

   location / {
    proxy_pass http://127.0.0.1:1337;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;

   }
Run Code Online (Sandbox Code Playgroud)

}

在sails.js应用程序的config / cors.js文件中,我允许所有域CORS访问:

 origin: '*',
Run Code Online (Sandbox Code Playgroud)

似乎在nginx的db.localhost服务器块中添加通配符'*'之前先添加了一个空白域,因为Chrome中的错误是:',*' <-请注意先是空字符,然后是逗号,然后是*(通配符)

我的配置哪里出错了?

google-chrome nginx angularjs sails.js restangular

3
推荐指数
1
解决办法
8908
查看次数

函数中Restangular的jasmine测试用例

如何为Rectangular编写茉莉花测试,如下所示

脚本

$scope.allEmployees = [{
            visible: true,
            empId: "EMP148"
 }];

$scope.employeeDocuments = {  "EMP148": [{
                                        "empId": "EMP148",
                                        "department": "Sales",
                                        "firstName": "Manu",
                                        "lastName": "Mathew",
                                        "place": "Kolkata"
                                        }]
                           };

var employeesCopy = angular.copy($scope.allEmployees);
$scope.allEmployees.push({visible: true, empId: "EMP489"});  

$scope.addEmployees = function (employeesCopy) {
    var newEmployee = {visible: true, empId: "EMP489"};
    var emplyeeList = {
        employees: $scope.allEmployees,
        newEmployee: newEmployee
    };
    Restangular.all('emp/getEmployees').post(emplyeeList).then(function (employees) {
        if (!_.isEmpty(employees[emplyeeList.newEmployee.empId])) {
            if ($scope.employeeDocuments.hasOwnProperty(emplyeeList.newEmployee.empId)) {
                delete $scope.employeeDocuments[emplyeeList.newEmployee.empId];
            }
            $scope.employeeDocuments[emplyeeList.newEmployee.empId] = employees[emplyeeList.newEmployee.empId];
            setMyEmployees(true);
            $scope.flag = true;
            console.log("success");
        } else {
            $scope.employeeDocuments …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jasmine angularjs restangular

3
推荐指数
1
解决办法
3527
查看次数

添加到项目时的Restangular错误:`Error:$ injector:modulerr`

将Restangular添加到项目时会抛出sn [Error: $injector:modulerr]错误.我确保我的一个模块没有抛出这个错误.我已经按照文档设置了它,我从他们的CDN中撤出.如果将Restangular作为依赖项删除它可以工作.

转载如下:

JS:

angular.module('app', ['restangular'])
.controller('Main', function(){
    this.msg = 'Hello World'
})
Run Code Online (Sandbox Code Playgroud)

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/restangular/1.3.1/restangular.js"></script>

<main ng-app="app" ng-controller="Main as vm">
  <h1>{{vm.msg}}</h1>
</main>
Run Code Online (Sandbox Code Playgroud)

codepen中转载.

javascript angularjs restangular

3
推荐指数
1
解决办法
1577
查看次数

Restangular:如何获取HTTP响应头?

我有一个REST服务器,它返回一个Link带有对PUT的响应的HTTP头,以指示新创建的实体的URL:

Link:<entities/6>; rel="created"
Run Code Online (Sandbox Code Playgroud)

有没有可能用Restangular读取该链接头?

到目前为止我唯一能够使用Restangular拦截HTTP请求的工具是在app config中注册响应拦截器:

restangular.addResponseInterceptor(function (data, operation, what, url, response, deferred) {
    console.log(response.headers())
    return response.data;
});
Run Code Online (Sandbox Code Playgroud)

但是,通过上面的演示实现,记录的唯一HTTP头是content-type.不过,我可以在一个响应来确实增加了不少额外的HTTP响应头,比如浏览器工具栏的发展看Server,Date和前述Link.

为什么我无法访问完整的HTTP响应头数组addResponseInterceptor()有没有办法使用Restangular捕获有问题的HTTP响应头?

注意:我不使用HAL或任何其他特殊响应正文格式搜索答案.我想知道我是否可以使用带有Restangular的普通HTTP头(如果没有,我可能会使用HAL或其他东西).

http-headers restangular

3
推荐指数
1
解决办法
5606
查看次数

src和dist文件夹在NPM软件包中的作用

我正在使用Restangular进行HTTP请求。我想使用方法customPATCH。我可以在Restangular src /目录看到它在这里

但是,当我运行“ npm install restangular”并指向dist /文件夹时,出现错误“ customPATCH不是函数”。我注意到dist /文件夹中的源代码与src /文件夹中的源代码不同(它没有定义customPATCH方法)。

对于NPM软件包,为什么src /和dist /有什么区别?这些通常保持同步吗?在这种情况下,dist /目录在8个月内没有更新。我应该只使用src /文件夹中的源代码吗?也许我误会了如何使用NPM软件包(我总是使用dist /文件夹中的源代码)...

javascript github restangular

3
推荐指数
2
解决办法
5472
查看次数