回答
比利的賬單剛剛發佈了支持動畫轉換的Ember module。
我剛從燼裏開始。 鏈接的頁面顯示爲: 「需要注意的事項:[...]動畫在使用不同模型轉換到相同路徑時不會執行,這是由於Ember重複使用同一DOM元素的方式,在動畫支持登陸1.1版的Ember核心之前不會被固定。「 所以我的問題 - 這個答案是最新的嗎?使用emper 2.10來路由動畫的最佳選擇是什麼? – Benjamin
App.SomeView = Ember.View.extend({
didInsertElement: function(){
//called on creation
this.$().hide().fadeIn(400);
},
willDestroyElement: function(){
//called on destruction
this.$().slideDown(250)
}
});
我知道那些鉤子,然而,這些都沒有幫助我完成工作。問題是* didInsertElement *和* willDestroyElement *是特定於該視圖。 爲了平滑過渡,我需要知道路由器正在轉換到的其他視圖是否準備好,然後執行動畫/轉換,然後銷燬前一視圖。換句話說,我正在尋找更多*異步* - 行爲。 – david8401
我會擴展Lesyk的答案。如果您需要將其應用到多個視圖在乾燥的方式,你可以創建一個自定義類這樣的:
App.CrossfadeView = {
didInsertElement: function(){
//called on creation
this.$().hide().fadeIn(400);
},
willDestroyElement: function(){
//called on destruction
this.$().slideDown(250);
}
};
然後在你的代碼,你把它在你不同的視圖類。由於Ember依賴於jQuery,你可以使用幾乎所有的jQuery動畫。
App.IndexView = Ember.View.extend(App.CrossfadeView);
App.PostView = Ember.View.extend(App.CrossfadeView);
在我的應用程序中出現這種相同的要求。試過Ember Animated Outlet,但沒有給出我需要的粒度(元素特定的動畫)。
爲我工作的解決辦法是如下 -
變化linkTo是一個行動
{{#linkTo "todos"}}<button>Todos</button>{{/linkTo}}
變爲...
<a href="#/todos" {{action "goToTodos"}}><button>Todos</button></a>
創建方法fo中的R電流控制器goToTodos
App.IndexController = Ember.Controller.extend({
goToTodos: function(){
// Get Current 'this' (for lack of a better solution, as it's late)
var holdThis = this;
// Do Element Specific Animation Here
$('#something').hide(500, function(){
// Transition to New Template
holdThis.transitionToRoute('todos');
});
}
});
最後 - 要在動畫上託多斯模板元素,在視圖中使用didInsertElement
App.TodosView = Ember.View.extend({
didInsertElement: function(){
// Hide Everything
this.$().hide();
// Do Element Specific Animations Here
$('#something_else').fadeIn(500);
}
});
到目前爲止,這是最完美的解決方案我我們發現了過渡時元素特定的動畫。如果有什麼更好的,會喜歡聽!
如果您正在爲單個元素設置動畫,您不是在談論狀態轉換。 ember-animated-OUTLET用於網點,據稱與OP的用例不同。此外,操作會破壞應用程序對URL的支持:-( – mpowered
我發現,實現了瀏覽動畫另一插入式解決方案:ember-animate
例子:
App.ExampleView = Ember.View.extend({
willAnimateIn : function() {
this.$().css("opacity", 0);
},
animateIn : function (done) {
this.$().fadeTo(500, 1, done);
},
animateOut : function (done) {
this.$().fadeTo(500, 0, done);
}
}
我知道這是很老,但最好今天針對這種情境特定動畫的解決方案可能是ember liquid fire。
它允許你做這樣的事情在一個過渡文件:
export default function(){
this.transition(
this.fromRoute('people.index'),
this.toRoute('people.detail'),
this.use('toLeft'),
this.reverse('toRight')
);
};
- 1. ember.js動態路由問題
- 2. Ember.js路由器和動態段
- 3. Ember.js URL如何表示每個可能的路由器狀態?
- 4. 動態加載UI路由器狀態
- 5. Ember.js動態路由器不加載模板使用序列化
- 6. 刷新的角度UI路由器動態狀態轉至404
- 7. UI路由器。動態替換根狀態的模板
- 8. Ember.js路由 - 有條件地阻止路由/狀態改變
- 9. 通過Ember.js路由使用動態段
- 10. UI路由器中的狀態轉換並從父抽象狀態中解析
- 11. 從父狀態轉換到UI路由器子狀態的問題
- 12. Python燒瓶:轉換器如何工作? (動態路由)
- 13. Angular UI路由器:狀態轉換親子
- 14. $拒絕承諾後的狀態轉換角度ui-路由器
- 15. 如何將量角器掛鉤到角度ui路由器狀態轉換
- 16. 如何處理Ember.js控制器的路由器轉換?
- 17. 如何等待反應路由器onEnter的狀態變化?
- 18. AngularJS狀態路由
- 19. AngularUI路由器 - 滾動到狀態變化的元素
- 20. React將動態狀態傳遞給路由器中的所有路由
- 21. 如何在單元測試中轉換到UI路由器狀態?
- 22. Ui路由器:如何獲得轉換中的下一個狀態參數
- 23. 如何轉換此路由器路由?
- 24. React路由器 - 動態路由設置
- 25. Ember路由器動態路由
- 26. Zend Framework路由器動態路由
- 27. 角UI路由器動態路由
- 28. Angular UI路由器:帶動態參數的默認狀態
- 29. 在UI路由器中狀態轉換之間淡入淡出動畫
- 30. URL變化不觸發對角UI路由器狀態變化
你有沒有考慮到['Ember.View#willDestroyElement'(HTTP加入過渡類到您的視圖:// emberjs。 COM/API /班/ Ember.View。HTML#event_willDestroyElement)? – MilkyWayJoe
fwiw,我下面關於[ember liquid fire](http://ember-animation.github.io/liquidfire/)的回答被認爲是目前這種情況下的最佳做法:) – max