Ember.js 在EmberJS中更改模型属性时重新渲染视图

Ember.js 在EmberJS中更改模型属性时重新渲染视图,ember.js,highcharts,Ember.js,Highcharts,我正在尝试使用EmberJS和HighchartJS开发一个小应用程序,在模型属性更改后,我在重新渲染HighchartJS时遇到了一些问题。这是 我想要的是在模型属性完成更改时通知视图。但是,使用观察时,它会在模型开始更改时通知视图。这将导致scheduleOnce仅在模型属性更改的初始状态下运行 编辑:已解决 解决这个问题的方法非常简单,我只需要在贷款模型下创建一个“修改”的属性。然后,无论何时进行编辑,我都会更新此模型。现在,视图只需观察此“已修改”属性的更改。您需要在贷款控制器中挂接到s

我正在尝试使用EmberJS和HighchartJS开发一个小应用程序,在模型属性更改后,我在重新渲染HighchartJS时遇到了一些问题。这是

我想要的是在模型属性完成更改时通知视图。但是,使用观察时,它会在模型开始更改时通知视图。这将导致scheduleOnce仅在模型属性更改的初始状态下运行

编辑:已解决
解决这个问题的方法非常简单,我只需要在贷款模型下创建一个“修改”的属性。然后,无论何时进行编辑,我都会更新此模型。现在,视图只需观察此“已修改”属性的更改。

您需要在
贷款控制器中挂接到save
操作

通过使用
Ember.Evented
,您可以非常轻松地在视图和控制器之间进行通信:

App.LoanController = Ember.ObjectController.extend(Ember.Evented, { <--PASS IN EMBER.EVENTED     
  //...
    save: function () {
      this.set('isEditing', false);
      this.get('model').save().then(function () {
        this.trigger('highChartReload'); 
      }.bind(this));
    },
  //...
});
现在,视图将侦听要触发的事件的
LoanController
,然后触发
loadHighChart
方法

最后要做的事情是告诉
LoansController
需要
贷款:

App.LoansController = Ember.ArrayController.extend({ 
  needs: ['loan'],
  //...
});

应该这样做。希望有帮助

模型属性更改何时“完成”?我希望在用户完成编辑后将通知发送到视图。这也意味着模型属性完成了更改。为什么不在用户单击“保存”按钮时运行更改的函数?+1删除loansChanged方法,并将
This.loadHighChart()
添加到
Save
我在我的应用程序中实施的操作中,但是,视图没有侦听LoanController以触发highChartReload事件。隐马尔可夫模型。。。尝试将断点或console.log添加到
didInsertElement
钩子中,以检查
this.get('controller.needs')
this.get('controller').toString()
此外,控制台中是否有任何错误?此外,您是否看到此控制台日志的输出:单击保存按钮后,我可以看到“重新加载”日志。以及this.get('controller.needs')和this.get('controller').toString()的控制台日志是:-[“loan”,nextObject:function…]-不确定视图为什么不侦听事件。嗯。。。我想这可能是因为触发是在一个动作中发生的。查看我的更新编辑。
App.LoansView = Ember.View.extend({
  //...
  didInsertElement: function () {
    this.get('controller.controllers.loan').on('highChartReload', $.proxy(this.loadHighChart, this));
  },
  //...
});
App.LoansController = Ember.ArrayController.extend({ 
  needs: ['loan'],
  //...
});