我正在构建一个使用AngularJS的报表查看器,并试图找出通过多个指令处理报表定义更改的正确方法。通过指令协调Angular JS模型更改
例如,我有一个报告定义,看起来像:
vm.report = {
dateRange: {
startDate: "2013",
endDate: "2014"
},
columns: [
"id",
"first_name",
"last_name"
]
}
我创建各种指令来处理修改报表字段。例如,我有指令允许通过日历选取器修改dateRange。我有一个列选取器指令,允许修改列。最后,我有一个指令,允许用户加载一个新的报告,或保存当前的报告。
目前我正在使用回调与编辑处理更改。例如,编辑将宣布如下:
<date-range-editor ng-model="vm.report.dateRange" on-date-range-changed="vm.handleDateRangeChanged()" />
<column-editor ng-model="vm.report.columns" on-columns-changed="vm.handleColumnsChanged()" />
这当然有效,但我不确定它是否理想。简单地观察vm.report是否更好?或者也许我的指令应该发出我的控制器可以处理的事件。这些方法的优点和缺点是什么?还有其他我应该看的东西吗?
你直接绑定到模型,那么为什么你需要回调? – Josh 2014-10-20 15:37:06
我需要在报告定义更改时重新运行报告。但我不确定是否只是看报告定义的变化是最好的方式去这里。例如,在日期选择器上,我只想在开始日期和结束日期都发生变化之后重新运行报告,而不是在开始日期已更改但结束日期已更改之前。那有意义吗? – 2014-10-20 15:40:11