2016-04-17 5 views
0

私はWebアプリケーションを持っています。今まで私はすべてのURLを定義するために使用しました。今私は$州をよく知りたい。ログインページ(パブリック) - - その後、(プライベート) : だから、私は次のように構成されたウェブ持つ - ダッシュボードをホーム - 民間側がによって構成されて

ユーザーリスト: - ナビゲーションバー(トップ)メッセージを表示 - サイドバー(右)、ボタンのリスト(ホームとリスト) - 表示(ここでダッシュボードのホームが表示され、ユーザーが「リスト」を押すと、ユーザーリストが表示されます)。

'use strict'; 

angular.module('app', [ 
'app.login', 
'app.dashboard' 
]).config(
['$stateProvider', '$urlRouterProvider', '$resourceProvider', 
function($stateProvider, $urlRouterProvider, $resourceProvider) { 

    $resourceProvider.defaults.stripTrailingSlashes = false; 

$urlRouterProvider 
    .otherwise('/login'); 

$stateProvider 

    // Definizione dei template di base per le pagine 
    .state('app.dashboard', { 
    url: '/dashboard', 
    templateUrl: 'dashboard.html', 
    controller: 'dashboardCtrl' 
    }) 

    .state('app', { 
    url: '/app', 
    abstract: true, 
    templateUrl: 'app.html', 
    }) 

    .state('login', { 
    url: '/login', 
    templateUrl: 'login.html', 
    controller: 'LoginController' 
    }) 

    .state('app.list', { 
    url: '/list', 
    templateUrl: 'list.html', 
    controller: 'ListController', 
    }) 

}]) 

は何をしても/またはべきではない抽象的でなければなりません:main.jsで

私はwritterこれをしましたか?私は '一般的な' $状態を行うべきですか?また、あなたがサインインしなかった場合、あなたが進むことができない認可を追加したいからです。あなたはルーティングを構造化し、抽象的な状態を理解するのを助けてくれますか?

答えて

0

抽象的な状態を使用する理由は、あなたのURLの一部がナビゲート不可能である場合、は乾燥しての定義を保持することです。

/home/index 
/home/contact 

しかし、あなたのデザインに何らかの理由で、このURLは無効でした(つまり、ページのための無目的):

/home 

たとえば、次のようなURLスキームを持っていたと言います今度は、完全なURLを使用してこの状態の2つの状態を作成することができますが、/home/を2回書いています。その説明はもう少し複雑です。代わりに、最高のアイデアは、他の二つの状態は(UI-ルータのドキュメント用)子供であるその家の抽象親を作成することです:

$stateProvider 
    .state('parent', {url: '/home', abstract: true, template: '<ui-view/>'}) 
    .state('parent.index', {url: '/index', templateUrl: 'index.html' }) 
    .state('parent.contact', {url: '/contact', templateUrl: 'contact.html' }) 

ちょうど親状態の内側に、私たちはその唯一の子であるテンプレートを割り当てることがわかりa ui-view。これにより、子どもたちがレンダリングされます(あなたのものが空白になっている可能性もあります)。


場合によっては、空白のURLで抽象的な状態を使用することがあります。この設定の最善の使用法は、保護者resolveが必要なときです。たとえば、状態のサブセットに特定のサーバーデータが必要な場合があります。そのため、同じ解決関数を各状態に入れるのではなく、空のURLの親を目的の解決方法で作成することができます。親がビュー用に使用していない階層コントローラが必要な場合にも便利です(これはなぜ必要なのかわかりませんが、それは妥当です)。

出典:Why give an "abstract: true" state a url?

関連する問題