我正在编写一个角度应用来显示可以使用bootstrap collapse accordions打开和关闭的报告。我决定在手风琴的报告对象中添加一些特定于视图的值,如下所示:
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
功能的最佳方法是什么?我是否必须将该服务功能设置为我$scope
中ReportCtrl
的功能,或者我可以直接从视图中调用该功能吗?
答案 0 :(得分:1)
您可以直接调用工厂函数,但首先控制器必须将其绑定到控制器的范围:
myApp.controller('Ctrl', function ($scope, report) {
$scope.setAccordions = report.setAccordions;
}
然后你可以使用:
<button ng-click="setAccordions(true)">Set to true </button>