27

ui-routerコントローラーのみのルートを設定することはできますか? 目的は、特定の URL で、私がやりたい唯一のことは、プログラムでアクションを実行することであり、ビューに関しては何も表示しないことです。ドキュメントを読みましたが、これを行う方法が提供されているかどうかはわかりません。

はい、これを読みました: https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-open-a-dialogmodal-at-a-certain-state、しかしそれは私が探しているものではありません。

たとえば、ビューを持つ基本的なボディがあるとしましょう。

<body ui-view></body>

そして、いくつかの基本的な構成:

// Routes
$stateProvider
  .state('myaction', {
    url: "/go/myaction",
    onEnter: function() {
      console.log('doing something');
    }
  });

/go/myactionアクセスすると、ビューは空白になります。これを行うことは可能ですか?

4

5 に答える 5

1

はい、できます。絶対ビュー名を使用して<ui-view>、別の状態の を再利用します。

次の例を見てください。

ユーザーは自分のアプリにアクセスしますが、認証されているかどうかに応じて、公開ページまたは非公開ページに送信したいと考えています。状態を純粋に使用して、indexログインしているかどうかを確認し、またはにリダイレクトしindex.privateますindex.public

子ステートは、絶対ビュー名を使用し<ui-view>て、ステートに対応する要素を使用しindexます。このように、2 番目のネストされた を作成する必要はありません<ui-view>

$stateProvider.state('index', {
  url: "/",
  controller: 'IndexCtrl'
}).state('index.private', {
  views: {
    "@": {
      templateUrl: 'private.html',
      controller: 'PrivateCtrl'
    }
  }
}).state('index.public', {
  views: {
    "@": {
      templateUrl: 'public.html',
      controller: 'PublicCtrl'
    }
  }
});

この例に関するちょっとしたメモ:@ここではショートカットを使用しています。通常は を使用しますviewname@statename

于 2015-03-19T10:11:56.433 に答える