1

私はディレクティブを持っていwidgetます。その多くは、3 つの縦の列の 1 つにページに動的に追加されます。widgetディレクティブ内で、プロパティを介してどの列にあるかを追跡しparentます。これをレンダリングするために使用する HTML は次のとおりです。

<div id="columns">
    <div id="column1">
        <widget data-ng-repeat="widget in widgets | filter:{parent: 'column1'}" data-widget="widget" />
    </div>
    <div id="column2">
        <widget data-ng-repeat="widget in widgets | filter:{parent: 'column2'}" data-widget="widget" />
    </div>
    <div id="column3">
        <widget data-ng-repeat="widget in widgets | filter:{parent: 'column3'}" data-widget="widget" />
    </div>
</div>

それぞれwidgetが指定されたタイプであるため、それぞれが異なるコンテンツを持ち、互いに独立しています。ユーザーはこれらを異なる列間でドラッグ アンド ドロップでき、Angularparentは基になるデータの を自動的に更新します。私の問題は、Angular がこのモデルの更新を行うと、ディレクティブのリロードもトリガーされるため、ウィジェットが効果的に再初期化され、ユーザーが行った変更がすべて消去されることです。

Is there any way for me to allow Angular to update the underlying model data, but stop it from re-rendering that change to the view? I realise this is what Angular is supposed to do, but in this one situation its undesirable, and enough for me to consider removing Angular.

I can try to put together a JSFiddle illustrating the problem I have if that would be of use.

4

2 に答える 2

0

私は最終的にこれを自分で解決することができました。問題のデモを作成してここに投稿しようとしているときに、コードの構造上、それが不可能であることに気付きました。そのため、リファクタリングのプロセスに着手し、すべてが「Angular 方式」であることを確認しました。これにより、コードの構造が大幅に改善され、気分がずっと良くなりました。また、何が修正されたのかを実際に知らずに、うっかりして問題を解決してしまいました。

于 2013-03-04T09:16:26.617 に答える
0

おそらく、そのウィジェット ディレクティブを確認する必要があります。

しかし、それを見ずに、ビューを再処理するとウィジェットに加えられた更新が消去される場合、ウィジェットはあまり「Angular」ではありません。

つまり、ユーザー入力を DOM に永続化することは想定されていません。ngModel やカスタム ディレクティブなどのディレクティブを介してスコープにユーザー入力を永続化する必要があります。ディレクティブからの変更をその親モデルに公開したくない場合は、それを独自の分離スコープに保持し、必要に応じて変更をプッシュする必要があります。

于 2013-02-26T14:00:44.930 に答える