【发布时间】:2023-11-09 13:09:01
【问题描述】:
我正在尝试使用 EmberJS 和 HighchartJS 开发一个小型应用程序,但在 Model 属性更改后重新渲染 HighChartJS 时遇到了一些问题。这是http://www.loancomparison.com.s3-website-us-east-1.amazonaws.com/
App.Loan = DS.Model.extend({
name : DS.attr('string'),
principal : DS.attr('number'),
interest_rate : DS.attr('number'),
months_to_pay : DS.attr('number')
});
App.LoansView = Ember.View.extend({
templateName: "loans",
loansChanged: function() {
//this.rerender();
Ember.run.scheduleOnce('afterRender', this, 'propertyChanged');
}.observes('controller.@each.principal', 'controller.@each.name', 'controller.@each.interest_rate', 'controller.@each.months_to_pay'),
propertyChanged : function() {
console.log("property changed");
this.loadHighChart(); // This will load the highchart function.
},
});
我想要的是在模型属性完成更改时通知视图。但是,在使用观察时,它会在模型开始更改时通知视图。这会导致 scheduleOnce 仅在模型属性更改的初始状态下运行。
编辑:已解决 解决方案非常简单,我只需要在模型贷款下创建一个“修改”的属性。然后,每当进行编辑时,我都会更新此模型。现在视图只需要观察这个“修改”属性的变化。
【问题讨论】:
-
模型属性更改什么时候“完成”?
-
我希望在用户完成编辑后将通知发送到视图。这也意味着模型属性完成了更改。
-
当用户单击“保存”按钮时,为什么不直接运行更改后的函数?
-
+1 移除 loanChanged 方法,并将
this.loadHighChart()添加到save操作 github.com/pmkhoa/loan-comparison/blob/master/source/assets/js/…
标签: ember.js highcharts