Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 更改路线后重新渲染视图';s动态段_Ember.js - Fatal编程技术网

Ember.js 更改路线后重新渲染视图';s动态段

Ember.js 更改路线后重新渲染视图';s动态段,ember.js,Ember.js,我有一个带有动态段id的路由。当我在浏览器url输入字段中仅手动更改动态段部分时,就会进行转换,所有模型挂钩都会按预期调用 问题是:没有一个视图会重新提交。我想这是因为只有模型改变了,而不是用户界面。但是我在视图的didInsertElement处理程序中有一些UI逻辑——重新初始化UI插件等等 如何在动态段更改后强制ember重新播放视图?我同意josh的评论。如果您在更改动态段后重新提交视图,则意味着您的代码编写不正确。但如果你想那样做,我还是会给你一部分代码 在您的路线中: model:

我有一个带有动态段id的路由。当我在浏览器url输入字段中仅手动更改动态段部分时,就会进行转换,所有模型挂钩都会按预期调用

问题是:没有一个视图会重新提交。我想这是因为只有模型改变了,而不是用户界面。但是我在视图的didInsertElement处理程序中有一些UI逻辑——重新初始化UI插件等等


如何在动态段更改后强制ember重新播放视图?

我同意josh的评论。如果您在更改动态段后重新提交视图,则意味着您的代码编写不正确。但如果你想那样做,我还是会给你一部分代码

在您的路线中:

model: function(params){
   model.set('id', params.id);
}
在您看来,哪些需要重新招标:

_modelIdChange: function(){
  this.rerender();
}.observes('controller.model.id')

但我不建议这样做。我宁愿选择合适的装订。但我确实在某些情况下使用了重新渲染,这主要是在您最终使用jquery插件时。

我的第一个想法是:您真的希望整个视图重新渲染,还是希望视图反映模型中的更新?默认情况下,Ember设置为具有双向绑定,但有时可以编写删除双向绑定的代码。如果没有看到您的代码或JSBin,很难知道您的问题是什么,但一般来说,您希望确保视图和子视图之间的双向绑定完好无损。测试这一点的一种方法是添加一个访问相同模型属性的
{{input}
帮助程序,直接键入它,然后查看您的父视图是否更新。使用jQuery插件就是这种情况。我有一个编辑表单,有很多不同的输入-日期选择器、选择视图等等,我使用jquery插件。问题是-当我更改模型的id时-加载新模型,并更新输入的值,但如果例如我之前打开了一个日期选择器-它在模型更改后仍然打开,并保留用户的输入-这是错误的,我希望它刷新。另外,为所有嵌套视图复制粘贴modelIdChange处理程序似乎不是一个好主意。实际上,你的建议对我很有用。我创建了一个支持路由的视图,并添加了modelIdChanged处理程序。因此,当模型id更改时,将重新渲染包含所有嵌套零部件视图的整个视图。谢谢