ビューには、jQuery UI:Sortableディレクティブを使用して、リストアイテムのドラッグアンドドロップと並べ替えを容易にする、接続されたul
リストがたくさんあります。
JQuery UIのドラッグアンドドロップで行った変更は、$scope
関数を使用して$apply
に適用しますが、この部分は機能します…
しかし、私が今直面している問題は、これらのリストのいくつかにドロップすると、ユーザーが入力する必要のあるカスタムフォームを提供することです。
ユーザーには次のオプションがあります。
$apply
呼び出しが実行され、データが$scope
に永続化されます。$apply
を呼び出す代わりに、最後のドラッグアンドドロップ操作を効果的に元に戻して、すべてのリストを効果的に「再レンダリング」し、$scope
にまだあるデータを反映させる必要があります。この段階(最新のドラッグはまだ影響を与えていないため)。この「キャンセル」ボタンの効果は、ユーザーがリストアイテムを選択して別のリストにドラッグする前のポイントに、すべてを効果的に戻すことです。
ng-repeat
sの「更新」または「再レンダリング」を強制して、視覚的に更新し、現在の$scope
データを再度表示するにはどうすればよいですか?
ユーザーがフォームに記入し始めると、私は設定します
$scope.oldData = angular.copy($scope.data);
次に、ユーザーが好きなようにフォームを使用して$ scope.dataを編集できるようにします。
次に、ユーザーがキャンセルを押した場合は、$scope.data = $scope.oldData
を設定するだけです。