【发布时间】:2014-05-06 15:49:03
【问题描述】:
我正在阅读有关 Restangular 的信息,到处都提到 Restangular 承诺和 Angular 工作得很好,并且模板在这样的情况下正在更新:
由于 Angular 支持将 Promise 设置为范围变量 从服务器获取信息,它将显示在我们的模板中
$scope.something = Restagular.one('something').get();
我正在尝试做同样的事情,但 Restangular 正在服务中,因为我想让我的控制器保持清洁。当我向我的 REST API 发出请求时,Angular 模板没有更新并且我收到此错误:
XMLHttpRequest 无法加载
http://localhost:3000/api/template/1。请求被重定向到'http://localhost:3000/api/template/1/',这对于需要预检的跨域请求是不允许的。
这是我的代码: 服务中...
myAppServices.service('TemplateService', ['$http', '$cookies', '$cookieStore', Restangular',
function($http, $cookies, $cookieStore, Restangular) {
Restangular.setBaseUrl(constants.serverAddress);
var getTemplate = function(templateId) {
// Check the input
if (!isValidId(templateId))
return;
return Restangular.one('api/template', templateId).get();
};
// Public getters
this.getTemplate = getTemplate;
}]);
在控制器中..
$scope.currentCard = TemplateService.getTemplate(1);
那么在这种情况下,问题出在哪里 - 在客户端或服务器上。对于我的 API,我使用的是 django-rest-framework,但是当我获取包含所有模板(没有特定 ID)的列表时没有问题。
我知道我可以尝试从服务及其 .then() 返回一个承诺来设置我的范围变量,但在 Restangular 的官方仓库中提到了这一点,我想使用它,因为代码保持干净。
【问题讨论】:
标签: django angularjs django-rest-framework restangular