18

DOM要素が角度の範囲からデータをバインドするのを止める方法を見つけようとしています。

ifステートメントとすべてでこれを行うことができることは知っていますが、角度で要素をバインドするのをやめ、追加されたコンテンツを保持する本物の永続的な方法はありますか?

だから私はこれを持っていると言う

<div ng-bind=​"content" class=​"ng-binding">​Welcome​&lt;/div>​

そして、divがこれに変わるようにモデルを変更します。

<div ng-bind=​"content" class=​"ng-binding">​Welcome​ World</div>​

次に、バインドを解除するボタンをクリックするので、モデルを に変更する'Welcome Universe'<div>、以前と同じにはなりません。これ

<div ng-bind=​"content" class=​"ng-binding">​Welcome​ World</div>​

これを行うには他にも多くの方法があることは知っていますが、要素を複製して属性とテキストをループする古いものを置き換えることなく、要素を真にバインド解除する方法はわかりません..ect

デモのこと: http://jsfiddle.net/a9tZY/

したがって、これを行うことで、モデルまたはそのモデルにバインドされている他の要素に影響を与えるべきではありません。

簡単に言うと、Angular に要素を永久にそのままにしておくように伝えます。

4

3 に答える 3

3

これが気になったので色々と調べてみました。最初に、他の回答で提案されている「unbind()」メソッドを試しましたが、実際にしようとしているのが要素から角度スコープを削除する場合にのみ、要素からイベントハンドラーを削除することで機能しました。Angular には、これを行うためのより適切な隠し関数があるかもしれませんが、これも問題なく機能します。

angular.element(document.getElementById('txtElem')).scope().$destroy();

これにより、モデルは保持されます (そして、モデルにまだバインドされているものはすべて更新されます) が、要素からバインドが削除されます。また、上記の例では、モデル式をインラインで表示するだけで、どの要素にもバインドしていないため、削除するバインディングはありません。私の例は、これを実際に示しています: http://jsfiddle.net/3jQMx/1/

于 2013-08-15T04:31:56.027 に答える
1

ng-model 属性が存在する要素のリッスンを停止する unbind メソッドを呼び出すことができます。フィドルを参照してください: http://jsfiddle.net/jexgF/

angular.element(document.getElementById('txtElem')).unbind()

unbind はすべてのイベントリスナーを削除するため、変更が行われるたびにそれらをリッスンせず、角度ループを通過しません。また、jQuery を使用していないと仮定しましたが、使用している場合は、document.getElementById よりも優れたセレクターを使用できます。

于 2013-08-14T19:38:46.663 に答える