AngularJS更新不起作用

时间:2016-06-16 18:18:40

标签: javascript angularjs

我在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;
           };
     }]);

1 个答案:

答案 0 :(得分:0)

现在几乎没有问题... this.put行不会被称为代码现在如何,因为没有关闭括号}来完成showDetails函数并从中返回函数在到达this.put行之前发生。在您使用数组的变量注入中,您将丢失' $ q'您应该在控制台中看到一些关于$ http的错误....确保您粘贴的代码是您正在运行的代码,或者理想地将代码放入"工作"最好的你可以用plnkr或codepen。

Template

this is some fake code because sometimes SO is dumb