1

複数の記事を開いてタブで編集できる、angularjs の表構造ベースの cms を設計しています。記事には articleController を使用しています。各記事の URL パラメータ (主に記事 ID) は異なります。

私はこれらのタブを粘着性にしようとしています。

以下は私が書いたコードです:

$urlRouterProvider.otherwise('/');
            $urlRouterProvider.deferIntercept();
            $stickyStateProvider.enableDebug(true);

            //States definition for tabbed routes
            $stateProvider.state('main', {
                url:         '/?ssoToken',
                templateUrl: 'main.html',
                controller: 'MainController',
                abstract:true
            }).state('main.dashboard', {
                url:         'dashboard',
                views: { 'dashboard@cmslite': { controller: 'DashboardController', templateUrl: 'dashboard.html'}},
                sticky: true
            }).state('main.article', {
                url:         'article?id',
                views: { 'article@cmslite': { controller: 'ArticleController', templateUrl: 'article_partial.html'}},
                sticky: true
            });

メインコントローラー:-

 $scope.tabData   = [
                        {
                            heading: 'Dashboard',
                            route:   'cmslite.dashboard',
                            params:$scope.$routeParams,
                            view:'dashboard'
                        },
                        {
                            heading: 'Article',
                            route:   'cmslite.article',
                            params:$scope.$routeParams,
                            view:'article'
                        }
                    ];
$scope.matchTabStates=function(tab){
                        if($state.includes(tab.route)){
                            if(Utils.arraysEqual(tab.params,$scope.$routeParams)){
                                return true;
                            }
                        }
                        return false;
                    };

main.html

<div ng-repeat="tab in tabData" ui-view="{{tab.view}}" ng-show="matchTabStates(tab)"></div>

ダッシュボードコントローラー

//To add articles in tabs dynamically
$scope.editArticle = function(id,title){
                var reqParam = {id: id, ssoToken: MainProperties.ssoToken};
                if(id!=null && id!="") {
                    $scope.$parent.tabData.push({
                            heading: 'Article: ' + title,
                            route: 'cmslite.article',
                            params: reqParam,
                            view:'article'
                        }
                    );
                }
            };

そのため、ユーザーはタブからさまざまな記事を編集するための新しいタブを追加できます。

複数の記事が同じコントローラーを使用しているため、ある記事から別の記事にタブを切り替える際に、複数の記事がタブ スティッキー状態にある場合の問題が機能しません。助言がありますか?

4

1 に答える 1

0

最後に、UI ルーター、スティッキー ステートを取り除き、ngshow と nghide を使用してこの機能を自分で開発するという結論に達しました。それは完全にうまく機能します。

使用されるコードの詳細な説明は、次の場所にあります。

パラメータを使用した URL ビュー/状態のキャッシュ

于 2015-02-02T09:39:02.993 に答える