gpt4 book ai didi

javascript - 在 Angular 中使用 Restangular 编辑模型会破坏 PUT,因为 Restangular 会附加模型 ID

转载 作者:行者123 更新时间:2023-11-30 05:42:14 25 4
gpt4 key购买 nike

我正在尝试为我的 Angular 应用程序创建一个编辑 View 。我正在使用 Restangular 作为处理我的 CRUD 操作的服务。

这里的 Plunker 就是一个很好的例子:http://plnkr.co/edit/d6yDka?p=preview&codekitCB=406920728.784061

但我不会使用 resolve。我无法得到传递给 Controller ​​的 promise 。

不过没什么大不了的,我只是像获取详细 View 一样在 Controller 中进行单次获取。

表单字段填充得很好。但是,当我执行 PUT 以保存编辑时,它将模型 ID 附加到 URL,以便有效地执行以下操作:/api/tasks/33/33。如何让它不将模型的 ID 附加到 PUT 将数据发送到的路径上?

我想我可以用 .put('tasks/' + $routeParams.taskId) 之类的东西覆盖 .put()。但这是行不通的。当然,这假设 Restangular root_api 设置在 /api/ 中。但这给了我一个 404 错误,因为它试图拆分 .put("tasks/"+ $routeProvider.taskId) 的内容,然后将其附加到 teh API 的 url。

那么,我如何让 Restangular 停止将 ID 附加到 URL?或者,如果我做错了什么,我该如何以正确的方式做到这一点?

这是我的代码供引用。

var myApp = angular.module('myApp', [
'ngRoute',
'ngAnimate',
'restangular',
'myAppControllers'
]);

myApp.config(
function($routeProvider, RestangularProvider) {
$routeProvider.
when('/tasks/edit/:taskId', {
templateUrl: '/static/partials/task-edit.html',
controller: 'TaskEditCtrl'
}).
otherwise({
redirectTo: '/tasks'
});

RestangularProvider.setBaseUrl('/api/');
RestangularProvider.setParentless(true);
RestangularProvider.setDefaultHttpFields({xsrfCookieName:'csrftoken', xsrfHeaderName:'X-CSRFToken'});
});

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

myAppControllers.controller('TaskEditCtrl', ['$scope', 'Restangular',

function($scope, Restangular) {

$scope.successMessage = true;

Restangular.one("tasks/" + $routeParams.taskId).get().then(function(task){
$scope.task = task;
})

var original = task;

$scope.task = Restangular.copy(original);

$scope.isClean = function() {
return angular.equals(original, $scope.task);
}

$scope.save = function() {
$scope.task.put().then(function(task) {
$scope.successMessage = false;
});
console.log('saved');
}
}

]);

最佳答案

而不是调用 Restangular.one('tasks/' + <id>) ,你真正想做的是 Restangular.one('tasks', <id>) .这样 Restangular 就知道这条路线真的是 tasks而不是 tasks/<id> .

关于javascript - 在 Angular 中使用 Restangular 编辑模型会破坏 PUT,因为 Restangular 会附加模型 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20165927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com