我在AngularJS应用程序中更新吉他对象时遇到问题。它在ngMock后端运行
使用updateGuitar控制器更新吉他对象。然后carService将处理put请求。
问题在于在我的carView控制器中获取更新的对象,因此当我执行location.path(/car/view/id
时,我会获得更新的对象。
这是我的guitarView控制器:
window.app.controller('guitarViewCtrl', ['$scope', '$routeParams', '$location',
'GuitarService', function ($scope, $routeParams, $location, GuitarService) {
'use strict';
$scope.guitarId = $routeParams.guitarId;
initGuitar($scope.guitarId);
function initGuitar(guitarId) {
GuitarService.showDetails(guitarId).then(function success(guitar) {
$scope.guitar = guitar;
}, function error(response) {
});
}
}]);
我的吉他服务: 有人说我需要在这个服务中填充我的吉他(我现在在mock.js中这样做)但是我不知道我应该怎么做。
window.app.service('GuitarService', ['HTTPService', '$http', function (HTTPService, $q, $http) {
'use strict';
this.showDetails = function (opleidingsprofielId){
// HTTP service returns correct urls
return HTTPService.get('/opleidingsprofiel/view/' + opleidingsprofielId);
this.put = function (opformUpdate, opleidingsprofielId) {
var deferred = $q.defer();
$http.put('/#/opleidingsprofiel/:opleidingsprofielId/update', opformUpdate)
.then(function resolve(response){
deferred.resolve(response.data);
}, function reject(response){
deferred.reject(response);
});
return deferred.promise;
};
}]);
答案 0 :(得分:0)
现在几乎没有问题... this.put行不会被称为代码现在如何,因为没有关闭括号}来完成showDetails函数并从中返回函数在到达this.put行之前发生。在您使用数组的变量注入中,您将丢失' $ q'您应该在控制台中看到一些关于$ http的错误....确保您粘贴的代码是您正在运行的代码,或者理想地将代码放入"工作"最好的你可以用plnkr或codepen。
this is some fake code
because sometimes SO is dumb