1

警告:Angular初心者が先にいます。

このコードはangular.jsページにあります

  <div class="clearfix" ng-controller="Controller">

    <h1>Active Ideas 
    <button type="button" ng-click="search()">get Ideas</button></h1>
    <hr>

次に、コントローラーを次のように定義しました。

function Controller($scope, $http) {
  $scope.search = function(){...

そしてそれはうまくいきます。

domの準備ができたらsearch()関数を実行したい...

$(function(){...から呼び出してみましたが、コントローラーから手動でメソッドを実行する方法がわかりません

また試してみました

$scope.$on('$viewContentLoaded', function() {

しかし、それを機能させることができませんでした(そして多くのドキュメントも見つけることができませんでした...)

4

2 に答える 2

14

searchコントローラーが初期化されたときに実行する必要があります。すなわち

function Controller($scope, $http) {
  $scope.search = function(){...};
  $scope.search();
}

Angular の Dependency Injection がコントローラーを構築すると、ビューがコンパイルされ、リンクされ、初期化コードの準備ができていることがわかります。

于 2012-09-24T02:50:34.327 に答える
0

場合によっては、最初のダイジェストを待つ必要があります。そうしないと、DOM の準備が整いますが、$scope に設定した値がありません。$scope の配列にリンクされた ng-repeat を持つ要素としましょう準備ができません。適切に動作させるには、コードを でラップする必要があります。$timeout(..., 0)これにより、コードは最初のダイジェストの直後に実行されます。

于 2014-12-19T16:26:40.757 に答える