0

テーブルに行を作成するディレクティブがあります。次に、ng-repeat を使用してアイテムのリストを反復処理し、テーブルにディレクティブ行を入力します。例:

<tr ng-repeat='item in items' rowItem='item' />

スコープの定義に問題があります。scope: falseそれはrowItem値を分離しないため、使用できません。rowItem 値にバインドできるようにしたいので、分離されたスコープを使用します。scope:{rowItem: '='}これは希望どおりに機能しますが、親スコープの値にアクセスできるようにしたいです。

ただし、最良の選択はscope: true、スコープを行項目にバインドできないことです。使用してみattrs.$observe('rowItem', ...)ましたが、rowItem は補間された属性ではないため、アイテムのリストが変更されたときにこれは起動しません。

scope: true属性にバインドできる新しい子スコープ ( ) を使用する方法はありますか? (分離スコープの場合のように)

4

3 に答える 3

2

探している答えが得られるように、CodePen の実際の例を作成しました。

私の例で示すように、トリックは scope.$eval(...) を使用することです。また、ディレクティブを少し悪用しようとしているように見えることも指摘しておきたいと思いますが、正確な要件について詳しく知ることなく、単に答えを提供しているだけです。あなたが示した例の単純さに基づいて、おそらくカスタム ディレクティブなしで要件を完了することができます。

于 2013-09-26T16:21:06.750 に答える
0

$observeは範囲内では利用できません。次の地域で利用できますattrs:

link: function(scope, elements, attrs){
    attrs.$observe('rowItem', ...)
}
于 2013-09-26T16:10:36.720 に答える