Angularjs AngluarJS重用函数(我把它们放在哪里)
假设我想在angularjs中重用一个返回特定值的函数,但我想在应用程序的其他部分调用它,这样我就不会在其他地方重写它(dry),我应该将该函数放在angularjs应用程序的何处?我能为工厂服务吗Angularjs AngluarJS重用函数(我把它们放在哪里),angularjs,Angularjs,假设我想在angularjs中重用一个返回特定值的函数,但我想在应用程序的其他部分调用它,这样我就不会在其他地方重写它(dry),我应该将该函数放在angularjs应用程序的何处?我能为工厂服务吗 假设我有两个控制器,在这两个控制器中,我想调用函数foo(),当我传递一个变量时,该函数返回一个特定的数字。在angular结构中,我将函数foo()放在哪里?使用angular 1.x,您需要创建一个服务以使某些东西可重用或类似于实用程序。您可以以类似于http服务的方式将其注入您想要的控制器。取
假设我有两个控制器,在这两个控制器中,我想调用函数
foo()
,当我传递一个变量时,该函数返回一个特定的数字。在angular结构中,我将函数foo()
放在哪里?使用angular 1.x,您需要创建一个服务以使某些东西可重用或类似于实用程序。您可以以类似于http
服务的方式将其注入您想要的控制器。取自,服务定义为:
AngularJS服务是连接在一起的可替换对象
使用依赖注入(DI)。您可以使用服务来组织和
在应用程序中共享代码
您可以在这里找到一个非常简单的服务-AngularJS有三个非常相似的概念:服务、工厂和提供者。每一个都可以用于使用干模式公开API。通常情况下,使用服务、工厂或提供商之间是一个偏好问题。我倾向于使用工厂
下面是一个简单示例,我使用工厂公开api:
这里有一个很好的参考资料,可以帮助您了解服务、工厂和供应商之间的异同:告诉我们您使用的是哪个版本的angular,以便我们可以定制他们的答案。如果是硬编码的,然后尝试使用AngularJS 1.6.4添加constantIm。如果我通过一个变量传递,那么硬编码的答案会发生变化。抱歉,它不是硬编码的。
var app = angular
.module("app", [])
.factory("myapi", function() {
var api = {
foo: function (bar) {
return bar + "_baz"
}
};
//now api is exposed to whoever injects myapi
return api;
})
.controller("ControllerOne", function($scope, myapi) {
$scope.value = myapi.foo("one");
})
.controller("ControllerTwo", function($scope, myapi) {
$scope.value = myapi.foo("two");
});