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>

私が直面している問題は、関数が 2 回呼び出されることです。

SO に関する多くの投稿を読んでください。この問題の背後にある理由は主にアプリの構成またはルート構成に関連しています。誤って別のビューに同じコントローラーを構成した場合、またはアプリが 2 回初期化された場合、この問題に直面します。

しかし、私の場合、そのようなケースはありませんが、それでもこの問題に直面しています。

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 に答える