【发布时间】:2015-04-28 14:13:27
【问题描述】:
在学习 Angular 时,我从他们的主页实现了 Ember.js 电子邮件小部件(由于某种原因它没有显示在 plunkr 中): http://plnkr.co/edit/OACzZbDHyNNNYM9oG5gB?p=preview
不幸的是,他们的源代码看起来比我的 Angular 版本更干净、更小...
我已经实现它创建一个自定义指令
<art-mailbox></art-mailbox>
现在我想通过不在邮件列表下方的同一页面上而是在单独的页面上显示电子邮件来更改默认行为。
基本上我想为我的小部件的右侧添加一个路由,如下所示:
function config($routeProvider) {
$routeProvider
.when('/mailboxes/:mailboxId/:messageId', {
templateUrl: 'messageView.html',
controller: 'MessageCtrl'
})
.when('/mailboxes/:mailboxId', {
templateUrl: 'messagesListView.html',
controller: 'MessagesListCtrl'
})
但问题是 - 我不想更改页面 URL。 我希望它保持“http://localhost/index.html”而不是“http://localhost/index.html#/mailboxes/inbox/53”,因为在同一页面上我将有多个小部件,我不希望它们在页面刷新后消失。
我想我可以通过ng-switch 指令实现视图切换,但我不喜欢这种方法,因为我无法为每个视图设置自定义控制器。
有点丑。自己看看:
<section class="main">
<div ng-switch="vm.activeMailboxId">
<div ng-switch-when="none">
<div ng-include="'partials/mailbox.default.html'"></div>
</div>
<div ng-switch-default>
<div ng-include="'partials/mailbox.details.html'"></div>
</div>
</div>
</section>
图片 1:绿框 - 小部件 #1,红框 - 小部件 #2。 尚未选择任何电子邮件 图2:第一封邮件被选中,其内容如下所示
【问题讨论】:
标签: angularjs angularjs-directive ngroute ng-view