所以這就是我所做的(我也使用angular-mobile-nav
和angular-snap.js
)。
這是我的HTML代碼
<body ng-app="MyApp">
<div snap-drawer>
<ul class="list">
<li ng-repeat="item in sidebar.items" ng-i18next="{{item.name}}" ng-tap="snapper.close();go(item.link)"></li>
</ul>
</div>
<div id="container" snap-content snap-options="snapOpts">
<div mobile-view=""></div>
</div>
</body>
請注意go()
是改變頁面的功能,我使用ng-i18next
翻譯我的項目。另外ng-tap
是一個指令,它偵聽觸摸事件而不是鼠標事件。隨着Angular> 1.1.5有一個移動模塊,所以我的ng-tap
指令將不再需要。
,並通過使用$rootScope
我可以把物品在側邊欄:
$rootScope.sidebar = {
items: [
{
name: 'item_one',
link: 'page_one'
},
...
]
};
所以,如果你想改變在側邊欄的項目,只需覆蓋$rootScope.sidebar
在你的控制器(未$scope.sidebar
);)
如果你不喜歡兩個動畫同時發生,你可以編寫一個函數,等待邊欄關閉,然後改變頁面。它可能看起來像這樣:
$rootScope.waitThenGoTo = function (page, time) {
time = time || 200;
$timeout(function() {
$navigate.go(page);
}, time);
};
如果您還有疑問,請評論。我會盡快更新這個答案。
我沒有使用'snap.js',而是使用了一些自寫的sidebar-directive。我已經將它的HTML放在index.html文件中('
')。我使用'$ route.current.locals。$ scope'獲取當前作用域的側邊欄數據。通過使用'ng-repeat',我可以顯示側邊欄內容(一個列表)。 我不知道這是否有效,但你可以嘗試圍繞'snap.js'(指令初始:P)創建一個指令。 – AndreM96感謝您的評論!我嘗試將我的側邊欄放在索引中,但是當包裹時,由於我的菜單超出了所有動畫發生的指令,因爲過渡動畫看起來並不平滑,所以播放效果不佳。 –
Hawk