Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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
Javascript 如何强制余烬重新渲染组件?_Javascript_Jquery_Ember.js - Fatal编程技术网

Javascript 如何强制余烬重新渲染组件?

Javascript 如何强制余烬重新渲染组件?,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,我有一个Ember组件,它使用jQuery添加画布图表。当我改变路线时,我会得到一个新的模型,但在这种情况下,Ember的自动重新渲染不起作用。事实上,我根本不知道如何使添加图表的组件代码重新运行。我该怎么做 如果它是一个视图,它会工作得更好吗?不看代码,我将根据您关于模型更改的陈述进行猜测 组件当前 具有观察值的组件 假设组件中的模型名为model,则每次模型更改时以及元素最初插入页面时都会触发此操作。如果您需要它在模型更改和第一次插入的元素上采取不同的操作,您还可以将其分为两个单独的函数 u

我有一个Ember组件,它使用jQuery添加画布图表。当我改变路线时,我会得到一个新的模型,但在这种情况下,Ember的自动重新渲染不起作用。事实上,我根本不知道如何使添加图表的组件代码重新运行。我该怎么做


如果它是一个视图,它会工作得更好吗?

不看代码,我将根据您关于模型更改的陈述进行猜测

组件当前 具有观察值的组件 假设组件中的模型名为model,则每次模型更改时以及元素最初插入页面时都会触发此操作。如果您需要它在模型更改和第一次插入的元素上采取不同的操作,您还可以将其分为两个单独的函数

uiSetup: function(){
   // do magic here...
}.on('didInsertElement').observes('model') 

您首先使用什么代码来呈现图表?它是否在
init
上?听起来您还需要观察模型,当模型更改时,再次运行该代码。视图正在被弃用,组件是一种方式。我让它在InsertElement上运行。在Ember 1.13.0中,您有新的生命周期挂钩,允许您不使用
observer
(它们的性能有点高):这些挂钩不适用于此答案。@locks建议的挂钩在属性绑定的情况下可以工作。我将其与didReceiveAttrs钩子中的一起使用,并使用绑定的myStyle字符串更新样式属性。注意:必须清理样式更新:
Ember.String.htmlSafe(styleString)
uiSetup: function(){
   // do magic here...
}.on('didInsertElement').observes('model')