0

ディレクティブが正しく機能していないように見える理由を理解するのに苦労しています。問題の概要は次のとおりです。

Angular 要素を含む Ajax を使用して HTML を読み込みます。Ajax の応答は $compiled であるため、これらの要素は機能しますが、問題は 0 秒でタイムアウトする必要があることです。

<div my-directive button="bar">
    <button id="foo">Foo</button>
</div>
<button id="bar">Hi!</button>

そしてjs:

app.directive('myDirective', function() {
return {
    link: function(scope, element, attrs) {
        var foo = element.find('button');
        var bar = $(attrs.button);
    }
};
});

上記の foo-bar 要素は、 setTimeout(..., 0); で囲むまで見つかりません。

setTimeout を使用せずにそれらにアクセスするためのより良い方法があるかどうか誰かに教えてもらえますか?

4

1 に答える 1

1

あなたがしていることはこれを達成するための正しい方法ですが、$timeout を使用する必要があります。

app.directive('myDirective', function($timeout) {
return {
    link: function(scope, element, attrs) {
        $timeout(function() {
           var foo = element.find('button');
           var bar = $(attrs.button);
        },0);
    }
};
});

JavaScriptで実行コードの優先度を変更しているだけです。

于 2014-05-19T10:27:56.800 に答える