MEAN堆栈$资源回调路由

时间:2014-03-18 20:07:31

标签: javascript angularjs express mongoose mean-stack

我的MEAN应用程序中出现了非常令人沮丧和奇怪的事情。我经历了一个Mongoose模型/控制器的基本设置,然后为所有基本的CRUD操作创建了控制器。这起作用,让我有信心继续前进到非平凡的例子。 CRUD的一个非常基本的功能是将更新:PUT添加到我的资源中。作为成功调用更新功能的一部分,我重定向页面。在我的基本控制器中,这工作正常,但使用几乎完全相同的代码,它不适用于我的其他人,而是向/?显示一个非常奇怪的GET请求。

工作代码:

应用/脚本/服务/ person.js

angular.module('infinityApp')
  .factory('Person', function ($resource) {
    return $resource('/api/persons/:id', null, {
      'update': { method: 'PUT' }
    });
  });

应用/脚本/控制器/ personedit.js

angular.module('infinityApp')
  .controller('PersonEditCtrl', function ($scope, $http, Person, $routeParams, $location) {
    $scope.form = {};

    $scope.person = Person.get({id: $routeParams.id});

    $scope.update = function() {
      Person.update({id: $routeParams.id}, $scope.person, function() {
        $location.path('/person');
      });
    };
  });

服务器输出

GET /api/persons/5321ef1724f30e000027cee3 304 4ms
Updated 5321ef1724f30e000027cee3
PUT /api/persons/5321ef1724f30e000027cee3 200 4ms - 175b
GET /api/persons 304 8ms

非工作代码:

应用/脚本/服务/ role.js

angular.module('infinityApp')
  .factory('Role', function ($resource) {
    return $resource('/api/roles/:id', null, {
      'update': { method: 'PUT' }
    });
  });

应用/脚本/控制器/ useradmin /角色/ edit.js

angular.module('infinityApp')
  .controller('UserAdminRolesEditCtrl', function ($scope, Role, $routeParams, $location) {

    $scope.role = Role.get({id: $routeParams.id});

    $scope.update = function() {
      Role.update({id: $routeParams.id}, $scope.role, function() {
        $location.path('/useradmin/roles');
      });
    };

  });

服务器输出

GET /api/roles/532869c90a287b0000466dd7 304 6ms
Updated 532869c90a287b0000466dd7
PUT /api/roles/532869c90a287b0000466dd7 200 6ms - 114b
GET /? 200 3ms - 4.62kb

在调试回调函数时,Role.update的成功永远不会触发。相反,在PUT到我的API(这是成功的)后,GET /?被调用,我最终击中我的.otherwise路线参数。我不知道为什么它与人合作而不是角色合作。如果需要更多信息,请告诉我。

谢谢!

0 个答案:

没有答案