雖然學習角我已經實現Ember.js電子郵件插件從他們的主頁(它不是由某種原因顯示plunkr): http://plnkr.co/edit/OACzZbDHyNNNYM9oG5gB?p=preview如何在指令內使用路由切換視圖?
不幸的是他們的源代碼看起來比我的角的版本的它更清潔和更小...
我已經實現了它創建一個自定義指令 <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:第一封電子郵件被選擇,其內容顯示如下
感謝您的建議。我只是明白,沒有任何東西阻止我爲每個子視圖分配不同的ng-controller指令:) – yaru