私はAngularJSの完全な初心者であり、最初のプロジェクトの構築を開始しましたが、あらゆる段階で障害にぶつかっています...
私は非常に単純なものを構築しようとしています。これが私が達成しようとしていることの要点です:
この記事 (blog.brunoscopelliti.com/how-to-defer-route-definition-in-an-angularjs-web-app) に基づいて、JSON データを使用して取り込まれ、作成された 5 つのページ/ビューがあります。これは工場に配線されています。getJSON()
function($route, $location, $http, $q) { var jsonLoaded = {}; jsonLoaded.getJSON = function() { var deferred = $q.defer(); $http.get('pages.json').success(function(data) { deferred.resolve(data); }).error(function() { deferred.reject(); }); return deferred.promise; } return jsonLoaded;
ビューをナビゲートするとき、階層的なカルーセル遷移効果が欲しいです。つまり、インデックス 0 でインデックス 1 をクリックすると、右から左に移動し、インデックス 0 をクリックして戻ると、ビューが左から右に移動するなどです。 hasClass()。
別々のプランクで3つの主要なオプションを試しました:
オプション 1 ng-click を使用してクラスを追加する - http://plnkr.co/edit/0mrebo8BMlrz1YkttxsT?p=preview
$scope.navDirection = function(pageClass) {
$scope.pageTransClass = pageClass;
};
これにより、最良の結果が得られ、希望どおりにナビゲートされます。問題は、ブラウザの戻るボタンまたは進むボタンをクリックしたときに、クラスが同じままであることです。
入るビューと出るビューの両方のクラスを追加/変更します。
$routeProvider 解決を使用するオプション 2 - http://plnkr.co/edit/SPfgKUyYt7LMQITHzj2I?p=preview
resolve: {
direction: ["changePageDirection",
function(changePageDirection) {
return changePageDirection.direction($route.current.params.pageId, $routeParams.pageId);
}
]
}
これにより、クラスを追加するときに遅延が発生します。つまり、実際には 3 回目のナビゲーション項目のクリックでのみ機能し始めます。
このメソッドは、クラスを「開始」アニメーションに追加/変更するように縫い付けられていますが、「終了」はまだ古いクラスを保持しています。
Observe を使用したオプション 3 - http://plnkr.co/edit/TwtkGrY1Ww4uYY8n2LO5?p=preview
return function(scope, element, attrs) {
attrs.$observe("pageDirectionObs", function (value) {
if (value) {
element.addClass(value);
}
});
};
このようなオプション 2 は、3 回目のクリックでのみ実際に機能し始めます。
このメソッドは、「開始」アニメーションのクラスを追加/変更するように縫い付けられていますが、「終了」はまだ古いクラスを保持しています。
私の主な問題は、$scope と AngularJS がすべてをコンパイルする方法を理解している (または理解していない) ことだと思い始めています。
私は何週間もこれに取り組んできましたが、必要な場所に近づいていません。どんな助けでも大歓迎です。
前もって感謝します。
アップデート:
ui-view と ui-view-extras を使用した 4 番目の例を次に示します。
これがプランクです-embed.plnkr.co/vjSBLzMMKIrkHD7sOctN/preview