Ember.js组件重新加载程序未重新加载
我正在尝试将一些数据呈现到表中。数据按年份组织,用户可以在索引中添加年份 当用户添加一年时,该年的数据通过AJAX加载并添加到Ember.js组件重新加载程序未重新加载,ember.js,Ember.js,我正在尝试将一些数据呈现到表中。数据按年份组织,用户可以在索引中添加年份 当用户添加一年时,该年的数据通过AJAX加载并添加到Ember.Objectinfo,如下所示: var self=this; Ember.$.getJSON('url'+year, function(data) { var info = self.get("info"); info['total'][year] = data.total; info['commission'][year] = data.com
Ember.Object
info
,如下所示:
var self=this;
Ember.$.getJSON('url'+year, function(data) {
var info = self.get("info");
info['total'][year] = data.total;
info['commission'][year] = data.commission;
}
在模板中,数据通过助手中的每个显示:
{{#each-in info.total as |k t|}}
{{t}}
{{/each-in}}
按照手册,由于
中的每个都没有绑定到新属性,因此我添加了self.rerender()代码>在组件中的ajax分配之后
我的问题是组件没有重新招标。如果我更改路由并返回,页面将重新链接,数据将显示出来,因此问题显然出在rerender()调用上
PS:这里显示的代码是一个简化的示例;我必须在
中使用是有原因的,任何需要更改数据结构的解决方案都无济于事。我只想知道为什么rerender()
没有重新播放,以及如何让它重新播放。您的余烬版本是什么?您提供的指南是针对2.6.0的,但在Ember 2.6.0中运行的以下内容似乎正在运行。然而;在Glimmer2引入之后(我的意思是从2.10.0版开始),这似乎不起作用。如指南中所示,说明重新渲染的部分已删除。因此,这意味着你不能再以同样的方式实现你想要的
如果必须在
助手中使用;您可以检查以下在Ember 2.12.0上运行并仍然有效的代码。而不是通过组件内的self.rerender
强制重新渲染;你可以像Lux所说的那样依赖Ember的集合
。我更新了twiddle以反映这一点。你的余烬版本是什么?您提供的指南是针对2.6.0的,但在Ember 2.6.0中运行的以下内容似乎正在运行。然而;在Glimmer2引入之后(我的意思是从2.10.0版开始),这似乎不起作用。如指南中所示,说明重新渲染的部分已删除。因此,这意味着你不能再以同样的方式实现你想要的
如果必须在
助手中使用;您可以检查以下在Ember 2.12.0上运行并仍然有效的代码。而不是通过组件内的self.rerender
强制重新渲染;你可以像Lux所说的那样依赖Ember的集合
。我更新了twiddle以反映这一点。自从glimmer 2以来,对于循环中的每个,您不需要调用重新渲染器
现在您可以创建新对象了,但是更快的解决方案是只使用Ember.set
而不是[]
语法。因此,请将其替换为:
info['total'][year] = data.total;
为此:
Ember.set(info, `total.${year}`, data.total);
它会起作用的
如果您拒绝这样做,您应该调用notifyPropertyChange
。然而,Ember.set
是首选
签出。自从glimmer 2以来,您不需要为循环中的每个调用重新渲染器
现在您可以创建新对象了,但是更快的解决方案是只使用Ember.set
而不是[]
语法。因此,请将其替换为:
info['total'][year] = data.total;
为此:
Ember.set(info, `total.${year}`, data.total);
它会起作用的
如果您拒绝这样做,您应该调用notifyPropertyChange
。然而,Ember.set
是首选
结帐。非常感谢!我完全忘了检查版本。没问题!我有时也会遇到这种情况;)非常感谢你!我完全忘了检查版本。没问题!我有时也会遇到这种情况;)<代码>余烬集(this.get('info.total')、年份、data.total)
我推荐Ember.set(这个,`info.total.${year}`,data.total)代码>,但是是的。就是这样。Ember.set(this.get('info.total')、year、data.total)
我推荐Ember.set(这个,`info.total.${year}`,data.total)代码>,但是是的。就是这样。