私はテーブルに項目の束をリストするAngularJSアプリを持っています。このように:編集中にangularJSの並べ替えをオフにする
<table class='unstyled tmain'>
<tr>
<td ng-click='setSort($event)'>X</td>
<td ng-click='setSort($event)'>Desc</td>
<td ng-click='setSort($event)'>created</td>
<td> </td>
</tr>
<tr ng-repeat="item in items | orderBy:itemNormalizationFunction:sortReverse">
<td><input type='checkbox' ng-model='item.done'
ng-click='onCheckedChanged(item)'/></td>
<td><div edit-in-place="item.text"
on-save="updateItemText(value,previousValue,item)"></div></td>
<td><span class='foo'>{{item.created | dateFormatter}}</span></td>
</tr>
</table>
表のヘッダーをクリックすると、ソート順を設定できます。各データ行の2番目の列にあるセルは「インプレース」で編集可能です。テキストをクリックすると入力テキストボックスに置き換えられ、ユーザーはテキストを編集できます。私はそれを可能にする少しの指示を持っています。これはすべて動作します。
編集中に問題が発生します。 "description"(2列目)でソートするように設定したとします。次に、(edit-in-placeディレクティブを使用して)記述を編集すると、入力ボックスに入力するときにソート順が変わります。最初の数文字を変更すると、角が再ソートされ、アイテムはもうカーソルの下にはなくなります。それにも焦点が当てられていません。私はリストを探し直して、どこで再ソートされたのかを調べる必要があります。その後、再フォーカスして、タイピングを再開できます。
これはちょっとしたことです。
私がしたいのは、(a)入力ボックスをキー入力している間に再ソートを停止する、または(b)注文を保存する別の(表示されない)インデックス値をソートすることです編集が始まる前にしかし、私はそれらのいずれかを行う方法を知らない。誰も私にヒントを与えることができますか?
私はこれが一種複雑であることを知っていますので、何が起きているのかを示すためにplunkrを組み立てようとします。
理由だけではなく、より大きなモデルにそれをペアリング、のための別のモデルを使用しないとのonblur ? – rGil
うーん、考えがあります。それを試してみてください。 – Cheeso
それはうまくいきました。ヒントありがとう! (なぜ私はそれについて考えなかったのですか?) – Cheeso