我正在搞乱phonegap和ember outlet动画,并遇到了一个问题,如果你有一个5标签视图,有时动画需要向左滑动,其他时候向右滑动。所以我开始写出一个我认为 工作的解决方案。
App.ApplicationController = Ember.ArrayController.extend({
currentView: 1, // views are 1-5
actions: {
goToFeed: function() {
if(this.get('currentView') == 1) {
// do nothing
} else {
this.transitionToAnimated('index', {main: 'slideRight'}, function() { return App.CARDS; });
}
this.set('currentView', 1);
},
goToTopTier: function() {
if(this.get('currentView') == 2) {
// do nothing
} else if(this.get('currentView') < 2) {
this.transitionToAnimated('toptier', {main: 'slideRight'}, function() { return App.CARDS; });
} else {
this.transitionToAnimated('toptier', {main: 'slideLeft'}, function() { return App.CARDS; });
}
this.set('currentView', 2);
},
goToSchools: function() {
if(this.get('currentView') == 3) {
// do nothing
} else if(this.get('currentView') < 3) {
this.transitionToAnimated('schools', {main: 'slideRight'}, function() { return App.CARDS; });
} else {
this.transitionToAnimated('schools', {main: 'slideLeft'}, function() { return App.CARDS; });
}
this.set('currentView', 3);
},
goToFriends: function() {
if(this.get('currentView') == 4) {
// do nothing
} else if(this.get('currentView') < 4) {
this.transitionToAnimated('friends', {main: 'slideRight'}, function() { return App.CARDS; });
} else {
this.transitionToAnimated('friends', {main: 'slideLeft'}, function() { return App.CARDS; });
}
this.set('currentView', 4);
},
goToProfile: function() {
if(this.get('currentView') == 4) {
// do nothing
} else {
this.transitionToAnimated('index', {main: 'slideLeft'}, function() { return App.CARDS; });
}
this.set('currentView', 4);
}
}
});
通读它,对我来说很有意义,但我得到一个错误,说未定义不是一个函数。查看billysbilling的文档,我按照transitionToAnimated(name, animations, model)
的说明进行了操作。
如果我可以做一个简单的{{#if view&lt; somevalue}}那么这将是完美的,但我们不能在ember中做到这一点。
有什么建议吗?
更新
所以我想到了为什么功能被识别了。这是因为this.transitionToAnimated
仅在Ember.Route
内Ember.ArrayController
内有效。所以我解决了这个问题,但我仍然遇到错误。我会继续努力,但任何帮助都会受到赞赏。