添加控制器到我的mean.js应用程序似乎自动启动api调用?

时间:2016-04-12 21:45:02

标签: angularjs meanjs

无法跟踪此问题。我正在为meanjs应用程序中的用户注册添加工作流程,以便管理员必须邀请用户才能允许他们注册。

出于某种原因,无论何时加载邀请表单,都会尝试/api/users/invitation进行API调用,我没有(据我所知)请求,并且没有任何意义。没有它需要的数据。我假设有些东西在某个地方为我自动连接,但由于这404导致页面失败,我需要杀死它,如果可以的话。

这是我的控制器:

    (function () {
  'use strict';

  angular
    .module('users.admin')
    .controller('InvitationController', InvitationController);

  InvitationController.$inject = ['$scope', '$state', '$window', 'Authentication'];

  function InvitationController($scope, $state, $window, Authentication) {
    var vm = this;
    vm.invitation = {};
    vm.sendMail = sendMail;
    vm.authentication = Authentication;

    function sendMail(isValid) {
      if (!isValid) {
        $scope.$broadcast('show-errors-check-validity', 'vm.invitationForm');

        return false;
      }

      var invitation = vm.invitation;

      // TODO: send to the server
      console.log(invitation);
    }
  }
}());

这是相关的stateprovider片段:

.state('admin.user-invite',{
        url: '/users/invitation',
        templateUrl: 'modules/users/client/views/admin/invite-user.client.view.html',
        controller: 'InvitationController',
        controllerAs: 'vm',
        data: {
          pageTitle: 'Invite a User'
        }
      })

还有什么想法吗?这是我第一个使用MEAN.js框架的应用程序,虽然我过去使用过角度很多。

2 个答案:

答案 0 :(得分:0)

好的,我花了很长时间才意识到这一点,但事实证明,网址匹配是手头的实际问题。

我应该在问题中包含我的全套客户端路线,因为/users/invitation实际上是宣布的最后一条路线。事实证明,/users/:userId与之匹配,因此路由器将invitations解释为userId,并且匹配路由具有解析器功能,该功能反过来试图呼叫我的服务器端用户api。

现在仍在烘烤我的面条的部分(虽然它解决了我当前的问题不太重要)是为什么路由匹配器会这样做,但仍然渲染我分配给{{1}的模板路线?这样做的事实肯定会使调试时间更长,因为匹配的路由分配给它的模板与我预期的路径非常不同。

答案 1 :(得分:-1)

您可以检查开发人员工具中的网络请求吗?它可能是对'/ users / invitation'的请求,但是'/ api'部分在服务器端代码上加了前缀(前缀为路由器??)。