问题标签 [restangular]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Restler 中的 Restler 响应错误
我已经在这几天了,似乎无法让它发挥作用。我的问题是我在前端使用 Restler(版本 3)作为 API 和 Restangular,我收到以下错误:
以下是相关的代码片段,您可以看到我在做什么:
Restler 设置来设置我的 API
我将为我的 API 访问的用户类对象(现在我只是返回一个示例进行测试)
最后是我的 app.js 文件
API 正在返回以下 JSON 响应(取自 Firebug:
):
我看不到正在发生的任何会导致问题的事情。任何帮助将不胜感激!
javascript - 如何使用服务器响应更新 Restangular 模型对象?
我的 POST 和 PUT 返回在服务器上看到的实体的当前状态。如何在服务器调用后告诉 Restangular 更新其模型对象?
以防万一——为什么?因为在保存/更新期间,服务器可能已经计算了一些字段。因为其他客户端可能已经同时更新,我想确保当前正在更新的客户端是最新的。
到目前为止,我只发现了这个:
它看起来既肮脏又普遍,我怀疑一定有更好的方法。
编辑
上面的代码只演示了两个不同的操作。我的目标不是在创建实体后向服务器发送更新,而是在客户端更新状态。与服务器同步状态,如果你愿意的话。
当我发布一个对象时:
服务器响应具有以下内容:
...然后我希望 Restangularres
自动更新和重新调整对象,因此它具有 ID,可以是put()
等。
现在是一个不同/互补的场景。当我放置一个 Restangular 对象时:
服务器总是回复对象的当前状态,可能是:
...所以我希望 Restangularres
在这个 PUT 之后自动更新。
javascript - 使用带有 Restangular 的完整 URL
我喜欢 AngularJS 的 Restangular 的所有功能,除了我找不到(而且它可能不支持)只将完整 URL 传递给它的方法。我意识到 .one('something','someparam') 的好处,但我的问题是我传递了各种 URL 字符串,我真的不想为了使用 Restangular 而拆分()它们。
另外,我知道 baseURL 函数;但是我传递的这些 URL 不一定来自相同的基本路径。
例如,我可能有:
我得到的只是字符串...
angularjs - AngularJS(Restangular):做一个承诺块?需要使用它来验证令牌
我偶然发现了 Restangular 用于调用休息服务。它工作得很好,并返回了一个承诺。我需要能够拥有呼叫块。原因是在重新加载新页面时,我在技术上没有登录,但我可能在 cookie 中存储了一个令牌。我想根据休息服务验证这个令牌。问题是我需要它来阻止。
如果发生超时或者它无效,我可以将用户视为未经过身份验证。
这就是想要阻止的原因是我想使用 $location.path 将它们重定向到一个新的 URL,它不是一个有效的令牌。
这不会发生在特定的路线上,所以我不能使用阻塞的解析。从技术上讲,它发生在每条路线上 - 我使用 $on.$routeChangeStart 并检查内部变量是否已登录,如果未登录,我会检查存储的令牌。
这会在每次页面刷新时发生,但不会在应用程序内部导航时发生。
我想要获得的影响是 Gmail 的工作方式。
期待任何人对此的任何见解
谢谢
javascript - 如何仅使用 Restangular 放置一些字段?
假设我有一个包含多个字段的资源,其中一些是只读的。或者它们可能属于我想在服务器上以不同方式处理的不同用例。
例如,我的bing
资源如下所示:
我想让 Restangular 只 PUT 一些字段,执行如下请求:
我不想做的是:
我怎样才能实现它?
angularjs - 为什么我收到错误...意外请求:GET /internalapi/quotes
我在我的 Angular 应用程序中定义了以下服务:
我正在编写以下规范来测试它:
每当我运行测试时,第一个测试通过但第二个测试产生错误:
Error: Unexpected request: GET /internalapi/quotes
我究竟做错了什么?
编辑:
原来我是这样配置的Restangular
...... RestangularProvider.setBaseUrl("/internalapi");
但我在假装打电话给internalapi/quotes
. 注意缺少“/”。一旦我添加了斜线,/internalapi/quotes
一切都很好:)
ajax - 如何配置 Restangular URL 构建的 Id 属性
让,
另一个 GET 请求:
让: user: { id: '123' }
$scope.cars = $scope.user.getList('cars');
这将触发 GET 请求:/users/ 123 /cars
其中123是从id 属性中获得的。
问题:
是否可以明确配置我的对象的id 属性,例如:被命名为username。
python - restangular/django:“类型错误:对象#没有方法'push'”(没有调用RestangularProvider.setResponseExtractor?)
更新 2
我从 0.6.1 升级到 1.0.9 解决了这个问题。似乎认为在 0.8.7 和 0.8.8 版本中有两个修复程序需要完成这项工作。在 0.8.7 中,它确实调用了 reourceExtractor,但仍然会出现以下跟踪错误:
错误:$digest 已在Object.$get.Scope的 beginPhase ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:8334:15 ) 处的 Error () 处进行。 $apply ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:8136:11 ) 在 HTMLDivElement.ngEventDirectives.(匿名函数) ( http://ajax.googleapis.com /ajax/libs/angularjs/1.0.7/angular.js:12986:17)在 event.preventDefault (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:1992 : 10 ) Array.forEach (native) at forEach ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:130:11 ) at eventHandler (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:1991:5)在 HTMLDivElement.forEach.bind.events.(匿名函数)(http://ajax.googleapis. com/ajax/libs/angularjs/1.0.7/angular.js:2067:15 ) 在 event.preventDefault ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:1992 :10 )
然而 0.8.8 似乎已经清除了所有这些。我将继续四处寻找,看看是否还有其他奇怪之处。
我不知道我是怎么得到这样一个旧版本的restangular的。
更新:
所以通过javascript追踪
被称为成功变量是来自的匿名函数
其中 responseExtractor 是我在我的应用程序中设置的功能。所以这一切看起来不错???在
进行 REST 调用并且数据变量包含正确的 REST 响应。它在同一功能中分崩离析:
发生错误@value.push(new Resource(item)); 其中 value 本质上是 JSON 休息响应。
我读到角度资源要求您定义其余资源和响应,并且定义的一部分是定义数组部分。我不知道这是否是根本原因 - 但我认为restangular会为我解决这个问题。还有更多的挖掘工作。任何帮助 - 仍然 - 赞赏。
谢谢
所以我正在同时学习 Angular 和 Django。我已经使用 Django 休息服务来构建一个服务来返回一些简单的 JSON。那部分工作正常,但我似乎无法将它与 /restangular 连接起来。REST 调用正在发生,并且 json 被返回 - 但 responseExtractor 似乎没有被调用。我一直在坐立不安,似乎无法将手指放在它上面。
先感谢您
添加调用堆栈:
TypeError: Object # has no method 'push' at U ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:10:257 ) 在新资源 ( http:// /ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular-resource.js:350:9)在http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular- resource.js:407:32 at m ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:6:494 ) at http://ajax.googleapis.com /ajax/libs/angularjs/1.0.7/angular-resource.js:406:19 在 h ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:78 :33 ) 在http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:78:266 在 Object.e.$eval ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:88:347 ) 在 Object.e.$digest ( http:// ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:86:198 ) 在 Object.e.$apply ( http://ajax.googleapis.com/ajax/libs/angularjs/ 1.0.7/angular.min.js:88:506 )
非最小堆栈
TypeError:对象#在新资源(http ://ajax .googleapis.com/ajax/libs/angularjs/1.0.7/angular-resource.js:350:9)在 angular.module.factory.Resource.(匿名函数)(http://ajax.googleapis.com/ajax /libs/angularjs/1.0.7/angular-resource.js:407:32)在 forEach (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:137:20)在 angular.module.factory.Resource.(匿名函数) ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular-resource.js:406:19 ) 在 deferred.promise.then .wrappedCallback (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:6846:59)在 ref.then (http://ajax.googleapis.com/ajax/libs/angularjs/1.0 .7/angular.js:6883:26 ) 在 Object.$get.Scope.$eval ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:8057:28 )在 Object.$get.Scope.$digest ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:7922:25 ) 在 Object.$get.Scope.$apply ( http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:8143:24)
查看代码,responseExtractor 方法存储在我在堆栈中看不到的变量“a”中。
JSON
Javascript(编辑:修复了 sza 提到的剪切粘贴错误)
django-rest-framework - Restangular 使用 HTTP OPTIONS 而不是 GET
我有一个 Django 应用程序,它使用 Django-rest-framework 公开数据。我可以像这样以 json 格式访问我的对象:
或者
我现在正在尝试使用 AngularJS 来访问数据。我选择了restangular,这看起来很简单。我已经这样配置了restangular:
然后在我的控制器中:
问题是在我的 Django 日志中,我总是看到一个 HTTP OPTIONS 请求:
在 Firebug 中,它显示“状态代码 0 错误”。
知道我在做什么错吗?在此先感谢您的帮助!
问候,菲尔
angularjs - 在 AngularJS 中使用 restangular 或 $resource 访问 JSON
我已经完成了所有可能的阅读,但是我缺少将 AngularJS 与 Django Rest 框架一起使用的东西。为了解决“斜线”问题,我使用了restangular。我的模块的相关部分:
TcpMon 似乎显示了正确的响应:
但是我如何访问它?在我看来,这段代码不起作用:
我需要手动解析json吗?如果是,如何?提前感谢您的帮助。
问候,菲尔