0

index.html をテンプレートとして使用するいくつかのビューを持つルートがいくつかあります。特定のビュー (ログイン ページなど) で、index.html をテンプレートとして使用したくありません。Angular でこれを行う方法:

My routes:
.when('/user/:id/update',{
      templateUrl: 'views/updateUser.html',
      controller:  'updateUserCtrl'
  })
  .when('/role', {
    templateUrl: 'views/role.html',
    controller: 'RoleCtrl'
  })
  .when('/login', {
    controller: 'RoleCtrl' //Here I want a page withou template
  })

私はすでに次のように ui-route を使用しようとしました:

$stateProvider
.state('contacts', {
    abstract: true,
    template: '<ui-view/>',
    url: '/contacts'
})
.state('contacts.list', {
    // loaded into ui-view of parent's template
    templateUrl: 'contacts.list.html',
    url: '/list'
})
.state('contacts.detail', {
    // loaded into ui-view of parent's template
    templateUrl: 'contacts.detail.html',
    url: '/detail'
})

どちらの場合も、ページは常に index.html から継承されます。

4

3 に答える 3

0

ブラウザがアプリのすべてのコンテンツをリロードし、単一ページ アプリケーションのすべての概念が壊れるため、この方法はお勧めしません。

アプローチの 1 つは、テンプレート (html ファイル) とサービス/コントローラーでng-view/を使用して、ユーザー認証が問題ない場合に URL アドレスを置き換えることです。ui-view$location

この plnkr で、動作する 2 つの例を見てみましょう。

http://plnkr.co/edit/vPyH5lwbwYCMx6RCnVb0?p=preview

于 2015-01-22T00:12:11.867 に答える
0

少なくとも ui-router を使用すると、abstract: true を実行して、ルートをテンプレートなしに設定し、コントローラーをビューにスタックして動作を分離できます。 https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views

それ以外の場合、バニラ angularjs では、理論的には、テンプレートなしでコントローラーをロードする場合は、 template : "" を実行できます。 http://weblog.west-wind.com/posts/2013/Oct/15/Routing-to-a-Controller-with-no-View-in-Angular

于 2015-01-20T20:28:44.043 に答える