3

(用語の一部が間違っている場合はご容赦ください。私は Angular を初めて使用します。)

次のようなディレクティブがあります。

return {
    template: "<p>{{size}}</p><div ng-transclude></div>",
    link: function(scope, element) {
        scope.size = element.outerWidth();
    }
};    

が解決されたscope.size後に、この設定を有効にしたいと考えています。ng-transcludeただし、link関数が呼び出されると、これは当てはまりません。ng-transcludeコンテンツ内のサブの後にコードを実行する方法はありますか? DOM でロード イベントをリッスンする必要がありますか?

4

1 に答える 1

3

$ timeout()は、ネイティブイベントキューに作業を配置するため、ブラウザーのレンダリング後に処理されます。だからこれを試してみてください:

return {
    transclude: true,
    template: "<p>{{size}}</p><div ng-transclude></div>",
    link: function(scope, element) {
        //scope.size = element.outerWidth();
        $timeout(function() {
            scope.size = element.outerWidth();
        },0)

    }
};    
于 2012-12-30T04:08:06.870 に答える