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

时间:2015-07-29 08:05:05

标签: javascript angularjs ionic-framework angular-ui-router 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>

2 个答案:

答案 0 :(得分:5)

如果您已经在路线中定义了控制器,则不需要在html模板中定义控制器,使用值形式html模板删除ng-controller属性然后运行它将只运行一次

答案 1 :(得分:0)

而不是拥有这个

ng-controller =&#34; LoginCtrl as lgnCtrl&#34;

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

$NoCieReflection = new \ReflectionClass('\\Ogasys\\Enum\\NoCie');
if (!in_array($this->NoCie, $NoCieReflection->getConstants())) {
    $error = true;
    array_push($msg, "# de compagnie invalide");
}

它像魅力一样工作

控制器中的功能只被调用一次。

相关问题