我正在构建我的第一个余烬应用程序(ember-cli),我很困惑。
我有以下路线,它根据模型中的属性成功选择了一个视图:
import Ember from 'ember';
export default Ember.Route.extend({
afterModel: function(tournament) {
var state = tournament.get('state');
if (state === 0) {
this.transitionTo('tournaments.setup', tournament);
} else if (state === 1) {
this.transitionTo('tournaments.play', tournament);
} else if (state === 2) {
this.transitionTo('tournaments.complete', tournament);
}
}
});
然后我想在tournaments.setup
页面添加一些功能。所以我添加了一个控制器(tournaments/controllers/setup.js
:
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
start: function() {
var that = this;
var model = this.get('model');
model.set('state',1);
model.save().then(function(tournament) {
that.transitionToRoute('tournaments.play', tournament);
});
}
}
});
在启用我创建的start
操作以更改模型并重定向到所需路径的意义上,这是有效的。但这也会使模型无法进入setup.hbs
模板,如下所示:
<h3>{{name}}</h3>
<h4>Setup!</h4>
<p>{{state}}</p>
<p>{{eventDate}}</p>
<button {{action "start"}} class="btn btn-primary">Start</button>
如果controllers/tournaments/setup.js
文件不存在,则显示模型的属性。以某种方式创建此文件(当我转到setup
路径时未调用)会阻止模型到达模板。
我也尝试过明确定义路由setup.js
路由,但这没有帮助。
我正在使用FixtureAdapter,如果这很重要的话。有任何想法吗?我缺少一个概念吗?
答案 0 :(得分:2)
如果您希望在控制器上自动设置模型,则应在Ember.ObjectController
中扩展Ember.Controller
而不是tournaments/controllers/setup.js
。