26

$viewContentLoaded私のAngularコントローラーでは決して発火しません。以下:

function MyController($scope)
{
    $scope.$on('$viewContentLoaded', function()
    {
        alert("blah");
    });
}

ブレークポイントに到達することはなく、アラートをポップアップすることもありません。これはかなり標準的な使い方だと思うので、何が原因かはわかりませんが、発火していないことは間違いありません。コントローラー内の他のすべてが適切に動作しています。

これは何が原因でしょうか?

4

3 に答える 3

25

上記のコメントに基づいて、次のようなものがあるようです。

<ng-view>
   <div ng-controller="MyController"></div>
</ng-view>

ng-view タグの内容がどうなるかはわかりませんが$viewContentLoaded、ng-view スコープから出力されます。これは、 から上昇するだけであるng-viewため、コントローラーがそれをキャッチすることはないことを意味します。

于 2013-04-25T21:04:13.160 に答える
3

ビューの div で ng-controller を使用するのではなく、app.js ルート プロバイダーでコントローラーを指定することで、これを解決しました。$viewContentLoaded を使用する必要がある場合にのみこのメソッドを使用し、それ以外の場合は ng-controller を使用します。

angular.module('myapp', [...])
.config(function ($routeProvider, $locationProvider) {
   $routeProvider
      .when('/MyRoute', {templateUrl: 'views/MyView.html', controller: MyController})
  });
于 2014-01-02T21:42:21.303 に答える