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

使用 ui-router 至少你可以做 abstract: true 将路由设置为无模板并将控制器堆栈到视图上以实现分离行为。 https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views

否则,使用 vanilla 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 回答
0

不推荐它的工作方式,因为您的浏览器重新加载了您的应用程序的所有内容,它打破了单页应用程序的所有概念。

一种方法是在您的模板(html 文件)和您的服务/控制器中使用ng-view/来替换 url 地址(如果用户身份验证正常)。ui-view$location

看看这个 plnkr 有两个有效的例子:

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

于 2015-01-22T00:12:11.867 回答
0

对于您不希望 index.html 的基本模板(页眉、页脚等)出现的视图 - 您可以使用覆盖整个页面的 div(在该组件的 html 和 css 中)。

于 2018-06-20T13:25:48.077 回答