如何强制重新呈现自定义文本字段视图?
我创建了一个:
App.Select2View = Ember.TextField.extend({didInsertElement:function() {//plugin called here}});
它包含在模板表单中,当表单打开并且我选择另一个/不同的项目时,此自定义文本字段视图(基于选择2)不会重新呈现但保持不变。
我有嵌套的路由/资源。公司下属公司。当我选择一家公司时,我只有一个信息和编辑按钮,如果点击,则将公司控制器上的操作调用到" isEditing"在这种状态下,表格是开放的。如果我将状态更改为false,则会返回只读模型(查看公司信息)。
如果我先将其设置为只读模式,然后打开另一个项目并使用此公司数据呈现select2,那就没问题了。
但如果它处于isEditing状态,打开表单并导航到另一个公司项目,则所有表单输入字段都会根据模型进行更改(例如名称将更改,因为它绑定到名称键公司模型的价值),但select2保持与以前相同。
我不确定如何在Ember中重新渲染它。
这在主公司模板视图下定义为模板中的部分:
<script type="text/x-handlebars" id="company/_edit">
<p>{{input type="text" value=name}}</p>
<p>
{{view "select2"
prompt="Search for companies"
resource="results"
displayKey="text"
onSelect="addCompany"
onDeSelect="removeCompany"
}}
</p>
</script>
任何指针都表示赞赏。
答案 0 :(得分:0)
我是Ember的新手,我的回答可能不合适,但根据我的实验,问题是Ember尽可能地缓存。因此,它不会使用select2完全重新渲染视图,只有当视图处于某个状态时,前一个状态后跟下一个状态才会自动重新渲染。
至少现在的解决方案似乎是添加&#34; valueChange&#34;方法观察者&#34;值&#34;更改select2自定义TextField并进行与&#34; didInsertElement&#34;中相同的调用(在渲染视图时执行):
valueChange: function() {
Ember.run.scheduleOnce('afterRender', this, 'setupSelect2');
}.observes('value'),
现在即使我在&#34;编辑&#34;状态,它也将更新此select2,而不仅仅是与模型相关的标准表单输入。我现在可以导航到&#34;编辑&#34;对于所选的每个项目都打开的状态,并且值在select2中相应地更改。