2

ディレクティブの属性の変更を監視できますか?

私はこのようなものを持っています:

<online-wathers></online-watchers>

オンラインで接続されているユーザーをビデオブロードキャストに表示し、broadcast-idが必要です。明らかに、この属性がないと機能しません。このビデオブロードキャストは、ドキュメントの準備ができていない状態で開始されますが、発行者が実際に開始したいときに開始されます。そして、彼が開始すると、バックエンドは私にブロードキャストIDを提供します。

今のところ、apiがbroadcast-idを返すときに、broadcast-id="xx"を使用してDOMに追加するだけです。

$(".online-watchers-container")
      .html($("<online-watchers broadcast-id='"+broadcast.id+"' />"));
$(".chat-container")
      .html($("<chat broadcast-id='"+broadcast.id+"' />"));
$(".request-container")
      .html($("<live-requests broadcast-id='"+broadcast.id+"'></live-requests>"));

// compile directives
angular.bootstrap(angular.element("online-watchers, chat, live-requests"), ['MyApp']);

しかし、属性の追加または変更を監視する内部的な方法はありますか?したがって、ページの読み込み時に、DOMにすでに<online-watchers> </ online-watchers>があり、broadcastIdで応答を取得すると、DOMの要素に属性を追加するだけで、ディレクティブがそれに反応します。

たわごとコードのように扱っていただければ、より良い解決策の例をいくつか示していただければ幸いです。

ありがとう。

4

1 に答える 1

1

はい、できます

function MyDirective() {
    return {
        link: function (scope, iElement, iAttrs) {
            scope.$watch(iAttrs.scopeProp, function (val) {
                console.log("prop: " + val);
            });
            iAttrs.$observe("interpolated", function (val) {
                console.log("interpolate: " + val);
            });
        }
    }
 }

<my-directive scope-prop="someId" interpolated="{{someId + 1}}"

function MyCtrl($scope) {
    $scope.someId = 12;
}

その他の例については、次を確認してください:カスタムディレクティブ内で評価された属性を取得する方法

于 2013-03-24T22:08:58.370 に答える