我有一条加载我所有模型的路线,以及一条允许用户添加新模型的嵌套路线。
App.Router.map(function() {
this.resource("foo", {path: "/foo"}, function() {
this.route("add", {path: "/add"});
});
});
我的添加模板看起来像这样(非常基本)
{{input value=wat}}
这是我索引模板中的linkTo
{{#linkTo 'foo.add'}}Add A New Model{{/linkTo}}
当我点击添加按钮时,我只需使用$ .ajax创建模型并转换回列表路径。一切都很好,直到我再次点击“添加”链接。
当添加路线从第二次上方加载模板时,它仍然显示我之前输入的“wat”值。我希望它不会持续存在任何状态,因为每次“添加”新模型时,它都应该不知道任何以前的模型数据。
如何使用ember 1.1.2 +
实现这一目标更新
我采用的方法是重置路由的setupController方法中的每个元素(因为每次加载控制器时都会调用它)。
App.FooAddRoute = Ember.Route.extend({
model: function(params) {
var parentId = 1;
return Ember.Object.create({'bar': parentId});
},
setupController: function(controller, model) {
this._super(controller, model);
controller.set('bazz', '');
}
});
答案 0 :(得分:1)
快速而肮脏的答案是你想在路线上使用模型。如果没有,则必须手动清空控制器上的值。 Ember构建单独控制器。这通常非常方便且非常高效。
Singleton控制器保持状态。让它们保持无状态的最好方法是让它们由模型支持(从模型钩子返回一个空对象,并且没有在控制器上定义的值)。通过从模型钩子返回一些东西,它将使用一个ObjectController(或者您需要更新代码以在控制器上使用ObjectController)。然后,所有值都将代理到模型,而不是存储在控制器上。