从 Angular.js 视图中修改方法中的数据的最佳做法
Best practice for modifying data in a method from the view in Angular.js
我正在编写一个角度应用程序来显示可以使用引导折叠手风琴打开和关闭的报告。我决定向手风琴的报表对象添加一些特定于视图的值,如下所示:
var report = [{
"testName": "Cool Test",
"successful": true,
"openAccordion": "in" //this was added for bootstrap's sake to say whether this test in the report is collapsed or not
}]
我认为这样我就可以更新我的模型,双向数据绑定将为我折叠和解压缩内容。
不过,我现在想做的是,我想添加执行这些操作的按钮。例如,我想要一个按钮,用于将报表中的所有测试设置为"openAccordion":"in"
以打开所有测试,另一个按钮将它们设置为"openAccordion":""
以关闭所有测试。
我想出我可以编写一个服务,其功能挂在上面,如下所示:
bookApp.factory('report', function() {
this.getReport = function() {
[...]
return report;
}
this.setAccordions = function(report, setting) {
[set all tests to setting's value ...]
}
return this;
});
我想我喜欢这样,但是使用ng-click
来启动setAccordions
功能的最佳方法是什么?我是否必须在ReportCtrl
中将该服务函数设置为$scope
函数,或者我可以直接从视图中从服务中调用该函数?
可以直接调用工厂函数,但首先控制器必须将其绑定到控制器的作用域:
myApp.controller('Ctrl', function ($scope, report) {
$scope.setAccordions = report.setAccordions;
}
然后,您可以使用:
<button ng-click="setAccordions(true)">Set to true </button>
相关文章:
- 在页面上记录数据并实现pushstate()的最佳方式
- 操作数据的最佳实践
- 以角度渲染表中数据的最佳方式
- 存储数据的最佳方式是什么,以便与jquery一起使用
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 将数据绘制到C3的最佳实践
- 在我的代码中管理大量硬编码数据的最佳方法
- Ext JS - 将面板绑定到数据存储的最佳方法
- 将数据从视图传输到javascript的最佳方式
- 本地存储web数据的最佳实践
- 在线/离线数据更新移动最佳实践
- angularjs设计模式和从服务器获取数据的最佳实践
- AngularJS中使用ajax获取数据的最佳方式是什么
- Spring MVC与Google图表,创建javascript数据表的最佳方式是什么
- 更新视图和控制器之间的角度重复数据值的最佳方式是什么
- 在定期更新的 Angular 中存储和使用数据的最佳方式
- 从 Angular.js 视图中修改方法中的数据的最佳做法
- 显示具有 MVC 数据绑定视图模型 ASP.NET JQuery 对话框的最佳方式
- 当数据超过 5k 时,为动手提供条件格式的最佳方法
- 形成数据最佳实践