1. ホーム
  2. javascript

パラメータ変更時の Angular ディレクティブのリフレッシュ

2023-08-03 21:57:52

質問

私は、次のように初期化されたangularディレクティブを持っています。

<conversation style="height:300px" type="convo" type-id="{{some_prop}}"></conversation>

のときにディレクティブをリフレッシュするようにしたいです。 $scope.some_prop が変更されたとき、完全に異なるコンテンツを表示することを意味します。

そのままテストしてみましたが、何も起こりませんでした。 $scope.some_prop が変更されたときにリンク関数が呼び出されることさえありません。これを実現する方法はあるのでしょうか?

どのように解決するのですか?

リンク関数は一度しか呼び出されないので、あなたが期待することを直接行うことはできません。そのため $watch を使ってモデル変数を監視する必要があります。

このウォッチは、リンク関数で設定する必要があります。

ディレクティブに孤立したスコープを使用する場合、スコープは

scope :{typeId:'@' }

リンク関数に、以下のような記述を追加します。

link: function(scope, element, attrs) {
    scope.$watch("typeId",function(newValue,oldValue) {
        //This gets called when data changes.
    });
 }

分離されたスコープを使用しない場合は、watch を使用して some_prop