2

Emberjs 能够在加载模型时自动更新视图。例如,使用以下模板

{{#each controller}}
    {{name}}   
{{each}}

每次加载控制器中的模型时,视图都会更新。

但是,如果我们需要实现一个不支持此类功能的自定义视图怎么办。准确地说,我需要一个呈现图形图表的视图。我为此使用了一些第三方库。我在控制器中拥有的数据代表了我的视图应该呈现为图表的一些点。通常使用这些第三方库我们需要设置数据然后调用draw函数。

问题是当我只是将我的数据绑定controller.model到我的chart数据时,图表不知道这些数据是否真的被加载并且draw函数崩溃了。所以我想,我需要一些观察者,但我不知道该放在哪里。我的尝试是观察controller.model.isLoadeddraw在它发生变化时打电话。但它只工作一次,当我在路线上来回走动时,draw不再调用,因为模型都已加载。

4

2 回答 2

0

您可以从model要绑定的属性切换到包装器chartData属性。chartData然后可以使该属性同时依赖于modellastUpdate。最后添加一个update()刷新lastUpdate属性的方法。然后调用 update 将自动触发 chartData 绑定的刷新,从而触发图表的刷新。

lastUpdate: new Date(),

chartData: function() {
  return this.get('model');
}.property('model', 'lastUpdate'),

update: function() {
  this.set('lastUpdate', new Date());
}
于 2013-07-04T17:19:47.683 回答
0

您可以在插入视图周围放置一个条件。

{{#if controller.model.isLoaded}}
Put your chart view in here
{{/if}}

仅在模型加载后才会呈现视图

于 2013-07-04T17:14:52.190 回答