在模板中,我有许多输入控件,如文本框。
我想刷新页面,所以我在相应路由的动作哈希中调用了this.refresh();
。路径正在刷新(模型钩子被激活..),但用户在文本框中输入的文本不会消失。那么刷新有什么意义呢?
如何使输入控件显示为第一次加载路径时的效果?
答案 0 :(得分:1)
Route Refresh就像再次访问路线一样,所以取决于你的输入字段绑定的是它们取决于你的路线模型
然后他们应该填写模型的相关数据。
如果它们没有关联,它们将不被清除,如果它们相关联,它们将被模型中的数据填充。
答案 1 :(得分:0)
您需要在模型/控制器中关联这些属性。并重新设置setupController中的模型钩子和控制器属性中的模型属性以进行刷新。 Ember不会重绘DOM,除非它在if
each
with
之类的块帮手中。
单页应用程序中的重点是替换值而不重绘/刷新。这就是我们需要如何设计App。 IMHO。
但是总是有一种黑客的方式使它成为可能。我不会推荐这个。
<强>路由/ test.js 强>
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return { name: 'kumkan' };
},
actions: {
clickRefresh() {
this.refresh();
}
}
});
<强>控制器\ test.js 强>
import Ember from 'ember';
export default Ember.Controller.extend({
isRefreshed: true,
actions: {
clickRefreshh() {
this.toggleProperty('isRefreshed');
this.send('clickRefresh');
}
}
});
这是hacky部分,
<强>模板\ test.hbs 强>
{{#if isRefreshed}}
{{test-comp model=model}}
{{else}}
{{test-comp model=model}}
{{/if}}
<button {{action "clickRefreshh"}}> Refresh </button>
{{outlet}}
<强>模板\部件\测试comp.hbs 强>
<input type="text" value="Kumkan" />
{{input value=model.name}}
{{yield}}