1

我有一个非常简单的应用程序,我试图在其中调用我的控制器的功能,如下所示

 var app=angular.module('test',[])
 app.controller('ctrl',function($scope){
 $scope.func=function(){
    alert('hi')
  }
})

我就是这样称呼它的

  <body ng-app='test' >
    <h1 ng-controller='ctrl'>{{func()}}</h1>

  </body>

我面临的问题是我的函数被调用了两次。

阅读关于 SO 的许多帖子,其中此问题背后的原因主要与您的应用程序配置或路由配置有关,如果您错误地为不同的视图配置了相同的控制器,或者您的应用程序被初始化两次,那么您将面临这个问题。

但就我而言,我没有任何此类案例,但我仍然面临这个问题。

4

2 回答 2

3

使用{{func()}},您正在函数上创建监视func,每次摘要循环运行时,func都会被调用。

一个演示来演示:

var app = angular.module('test', [])
app.controller('ctrl', function($scope) {
  $scope.val = 100;
  $scope.func = function() {
    alert($scope.val)
  };
  $scope.add = function(a) {
    return ++$scope.val;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>

<body ng-app='test'>
  <h1 ng-controller='ctrl'>
    {{func()}}
    {{add()}}
  </h1> 
</body>

小提琴演示

于 2016-06-28T04:53:31.050 回答
0

func() 的目的是什么?

是否可以绑定变量而不是直接调用函数?

var app=angular.module('test',[])
 app.controller('ctrl',function($scope) {
   function func() { // called in the future
     $scope.funcValue = 'My Title';
   }
})

HTML:

<body ng-app='test' >
    <h1 ng-controller='ctrl'>{{ funcValue }}</h1>
</body>
于 2016-06-28T04:53:19.633 回答