我有一个功能,我现在需要在多个页面中使用,所以决定进入一项服务 - 但它不会像我期待的那样。
所以在我的HTML中我有:
<li ng-init="bg = underQBar(work.options)">
然后在控制器中(在我移动公共功能之前)它看起来像:
$scope.underQBar = function(toWorkArray) {
//some implementation, with a return at the end
}
现在我已经完成了我的服务:
function barService($window){
var self = this;
self.getBarColours = function(toWorkArray) {
//copied the implementation with the return here
}
}
因此在我的控制器中尝试这个:
$scope.underQBar = barService.getBarColours(toWorkArray);
然而,这不起作用,它没有得到我从HTML发送的参数 - 这是一个微不足道的修复或实施的错误吗?
答案 0 :(得分:2)
这是问题所在:
$scope.underQBar = barService.getBarColours(toWorkArray);
在这里,您要将服务函数调用的结果分配给$scope.underQBar
,当您打算为其分配函数时。
这应该有效:
$scope.underQBar = barService.getBarColours;
如果你想让读者更清楚它是一个功能,那就做:
$scope.underQBar = function (toWorkArray) {
return barService.getBarColours(toWorkArray);
}
答案 1 :(得分:0)
以下是您服务的正确定义:
Sub RefreshPivotData()
Dim pvotCht As PivotTable, Sheet As Worksheet
For Each Sheet In ThisWorkbook.Worksheets
For Each pvotTbl In Sheet.PivotTables
pvotTbl.RefreshTable
pvotTbl.Update
Next
Next
ThisWorkbook.Save
End Sub
这是在控制器中注入服务的正确方法:
angular.module("myModule").factory("BarService", ["$window", function($window){
var service = {};
service.getBarColours = function(toWorkArray){
//copied the implementation with the return here
};
return service;
}]);
以下是使用它的方法:
angular.module("myModule").controller("controllerName", ["BarService", function(BarService){
var self = this;
self.getBarColours = BarService.getBarColours;
}]);
说明:
您的视图无法访问角度的服务或工厂。您的视图只能调用您的控制器。 如果您的函数应该被许多控制器调用,您可以将此函数放在一个负责控制整个视图的全局控制器中。