与AngularJS执行控制器两次

前端之家收集整理的这篇文章主要介绍了与AngularJS执行控制器两次前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我理解AngularJS通过一些代码运行两次,有时甚至更多,像$ watch事件,不断检查模型状态等。

但是我的代码

  1. function MyController($scope,User,local) {
  2.  
  3. var $scope.User = local.get(); // Get locally save user data
  4.  
  5. User.get({ id: $scope.User._id.$oid },function(user) {
  6. $scope.User = new User(user);
  7. local.save($scope.User);
  8. });
  9.  
  10. //...

执行两次,将两个记录插入我的数据库。我显然还在学习,因为我一直在撞我的头这个年龄!

应用程序路由器指定导航到MyController如下:
  1. $routeProvider.when('/',{ templateUrl: 'pages/home.html',controller: MyController });

但我也有在home.html:

  1. <div data-ng-controller="MyController">

这消化了控制器两次。从HTML中删除data-ng-controller属性解决了问题。或者,controller:property可能已从路由指令中删除

使用标签式导航时也会出现此问题。例如,app.js可能包含:

  1. .state('tab.reports',{
  2. url: '/reports',views: {
  3. 'tab-reports': {
  4. templateUrl: 'templates/tab-reports.html',controller: 'ReportsCtrl'
  5. }
  6. }
  7. })

相应的报表标签HTML可能类似于:

  1. <ion-view view-title="Reports">
  2. <ion-content ng-controller="ReportsCtrl">

这也将导致控制器运行两次。

猜你在找的Angularjs相关文章