Angular JS 控制器调用了两次(ng-controller)

Angular JS controller called twice (ng-controller)

我正在开发一个离子应用程序,当使用 angular 登录时,我的控制器被调用了两次, 我已经查看了所有其他类似的问题,但没有找到解决方案。

问题是即使我删除了 ng-controller="LoginCtrl as lgnCtrl" 我的控制器被调用了一次,但没有双向数据绑定。

这是我的路线文件:

$stateProvider
.state('login', {
  url: "/login",
  views: {
    'main': {
      templateUrl: "app/user/loginView.html",
      controller: "LoginCtrl",
      controllerAs: "lgnCtrl"
    }
  }
})

  $urlRouterProvider.otherwise('/login');

这是我的控制器

angular.module('starter.controllers')
.controller('LoginCtrl', LoginCtrl);

function LoginCtrl($state, $storage, $translate, $ionicPopup, LoginService, messageService) {
    var lgnCtrl = this;
    console.log("user dash 1zz");
    return lgnCtrl;
}

这是我的观点: loginView.html :

<ion-view view-title="loginView" id="signinBlk">
   <ion-content>
       <div class="list list col span_1_of_2 "  ng-controller="LoginCtrl as lgnCtrl">
   </div>
   </ion-content>
</ion-view>

index.html:

<body ng-app="starter">
  <ion-nav-view name="main"></ion-nav-view>
</body>

如果您已经在路由中定义了控制器,则不需要在 html 模板中定义控制器,删除值为 html 模板的 ng-controller 属性,然后 运行 它将 运行 就一次

而不是这个

ng-控制器="LoginCtrl as lgnCtrl"

在html中,我们可以在控制器中定义路由时在控制器中使用它,例如在控制器中,它会像这样

$routeProvider
        .when("/", { templateUrl: "views/abc.html", controller: "LoginCtrl as lgnCtrl", caseInsensitiveMatch: true });

效果很好

控制器中的函数只调用一次。