0

いくつかのルートを持つ角度のあるアプリがあります。そのうちの 1 つに、viewContentLoaded でアクティブにしている jquery プラグイン (bxslider) があります。別のルートに移動してから戻ってきた場合、ルートのビューで行ったすべての jQuery 操作がクリアされ、もう一度やり直す必要がありますか?

最後の状態で以前のルートに戻る方法はありますか (クエリ プラグインは既にレンダリングされていますか?)

angTestApp.controller('MyRouteCtrl', function($scope, $timeout) {
  $scope.readyFunction = function(e) {
    $timeout(function(){
      $('.slider').bxSlider();
    });
//

 }
$scope.$on('$viewContentLoaded', $scope.readyFunction);
});

ルート MyRoute を呼び出すたびに、スライダーが再レンダリングされます。以前にその URL にいて、現在まだアプリにいる場合 (ただし別のルートにいる場合)、レンダリングされたバージョンを取得する方法はありますか? (結局のところ、ハッシュタグビューであり、ブラウザはアプリ内で更新されるべきではありません)

4

1 に答える 1

1

別のルートに移動してから戻ってきた場合、ルートのビューで行ったすべての jQuery 操作がクリアされ、もう一度やり直す必要がありますか?

はい:

現在のルートが変更されるたびに、含まれるビューは $route サービスの構成に従って変更されます。-- ng-view ドキ​​ュメント

.

最後の状態で以前のルートに戻る方法はありますか (クエリ プラグインは既にレンダリングされていますか?)

通常の ng-view とルーティングではありません。最初に bxSlider を使用してルートを離れると、ng-view 内の DOM 要素が新しいビューに関連付けられた DOM 要素に置き換えられます。

おそらく、bxSlider を使用してビューを離れるときに、ページのどこかにある非表示の DOM 要素 (フッター領域など) に "jQuery 移動" し、ルートに戻るときに元に戻すことができます。肝心なのは、自分でどこかに「キャッシュ」し、自分で復元する必要があるということだと思います。コードとデータを Angular サービスにラップするのがおそらく最善でしょう。

于 2013-01-03T17:29:26.600 に答える