ember中的路由刷新不会清除输入控件内容

时间:2016-09-29 13:11:45

标签: ember.js

在模板中,我有许多输入控件,如文本框。

我想刷新页面,所以我在相应路由的动作哈希中调用了this.refresh();。路径正在刷新(模型钩子被激活..),但用户在文本框中输入的文本不会消失。那么刷新有什么意义呢?

如何使输入控件显示为第一次加载路径时的效果?

2 个答案:

答案 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}}