2017-07-19 5 views
0

私はそのような状況があります:指示のHTMLの一部を再レンダリングするには?

私の指示は、いくつかのhtmlブロックを削除して保存します。

function link(scope, element, attrs) { 
    var storedHtml = angular.copy(angular.element(el)[0].innerHTML); 
    angular.element(el)[0].innerHTML = ''; 

    $timeout(function() { 
    angular.element(el)[0].innerHTML = storedHtml; 
    scope.$apply(); 

    }, 5000); 
} 

私はng-repeatで例えば私のディレクティブを使用します:

<ul> 
    <li ng-repeat="item in data"> 
    <div my-directive> 
     <p>{{item.name}} </p> 
    </div> 
    </li> 
</ul> 

だからstoredHtmlはこのようなことができます:

<p>{{item.name}}</p> 

再度レンダリングするすべての可能性がある。ここ は、リンク関数でありますhtmlブロックのこの部分、または少なくとも全体のng-repeatブロックは値を更新しますか?

+0

何をレンダリングしたいですか? '

{{item.name}}

'または '

評価値

'? –

+0

@ KoushikChatterjee第2の1つ

評価値

DarthJS

答えて

1

これを実行する代わりに、項目をディレクティブに渡すだけで、ディレクティブのテンプレート出力が必要なのはなぜですか?

<ul> 
    <li ng-repeat="item in data"> 
    <div my-directive data="item"></div> 
    </li> 
</ul> 

次に、あなたのディレクティブでは、スコープを使用して隔離itemにアクセスすることができます(同様に機能する他のディレクティブのスコープの方法があるが、私は分離株好みます)。あなたのディレクティブの

パートは次のようになります。

scope: { 
    data: '=' 
}, 
template: '<p>{{ data.name }}</p>' 

また、ここitemから他のプロパティにアクセスし、ビューに戻すことができます。

+0

隔離範囲の参照:https://stackoverflow.com/questions/34730412/access-isolated-scope-in​​-angular-directive-template –

+0

ありがとう、良い解決策、私はそれが私の状況に合っていると思う – DarthJS

関連する問題