1

我正在开发一个离子应用程序,当使用 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>

索引.html:

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

2 回答 2

5

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

于 2015-07-29T08:09:19.170 回答
0

而不是拥有这个

ng-controller="LoginCtrl 作为 lgnCtrl"

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

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

它就像一个魅力

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

于 2016-09-08T17:59:27.430 回答