Angularjs 服务中的角度移动函数
我有一个功能,我现在需要在多个页面中使用,所以决定转移到一个服务中——但它并不像我期望的那样运行 因此,在我的HTML中,我有:Angularjs 服务中的角度移动函数,angularjs,Angularjs,我有一个功能,我现在需要在多个页面中使用,所以决定转移到一个服务中——但它并不像我期望的那样运行 因此,在我的HTML中,我有: <li ng-init="bg = underQBar(work.options)"> 现在我已经完成了我的服务: function barService($window){ var self = this; self.getBarColours = function(toWorkArray) { //copi
<li ng-init="bg = underQBar(work.options)">
现在我已经完成了我的服务:
function barService($window){
var self = this;
self.getBarColours = function(toWorkArray) {
//copied the implementation with the return here
}
}
因此,在我的控制器中尝试以下操作:
$scope.underQBar = barService.getBarColours(toWorkArray);
但是,这不起作用,它没有从HTML中获取我发送的参数-这是一个微不足道的修复还是实现有问题?以下是您的服务的正确定义:
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;
}]);
下面是使用它的方法:
<li ng-init="bg = controllerName.underQBar(work.options)">
说明:
视图无法访问angular中的服务或工厂。视图只能调用控制器。
如果您的函数应该被多个控制器调用,您可以将此函数放在负责控制整个视图的全局控制器中。这就是问题所在:
$scope.underQBar = barService.getBarColours(toWorkArray);
在这里,您将服务函数调用的结果分配给qbar下的$scope.underQBar
,而您打算将其分配给函数本身
这应该起作用:
$scope.underQBar = barService.getBarColours;
如果您想让读者更清楚地了解它是一个函数,只需执行以下操作:
$scope.underQBar = function (toWorkArray) {
return barService.getBarColours(toWorkArray);
}
你能试试这个吗<代码>$scope.underQBar=函数(toWorkArray){返回barService.GetBarColors(toWorkArray)}代码>太好了,这很有效!这是最干净的实现方式吗?或者我可以改进吗?我想你可以做
$scope.underQBar=barService.getbarcolors代码>。原始代码的问题在于,您分配了getBarColor的结果(toWorkArray
到$scope。在Qbar
下,不是函数本身。我不认为他们的服务定义有任何问题,他们只是使用。service
而不是。factory
如果使用。factory
,则需要返回服务对象。如果使用。service
这个对象默认情况下,ject将返回。我发现原始问题注释中的回复有效。@georgeawg thx因为指向我,我忘记添加返回。但是您在哪里看到他的服务/工厂声明?
$scope.underQBar = function (toWorkArray) {
return barService.getBarColours(toWorkArray);
}