gpt4 book ai didi

AngularJS 依赖注入(inject)交换实现

转载 作者:行者123 更新时间:2023-12-04 11:07:21 25 4
gpt4 key购买 nike

我仍在学习 AngularJS,并且对它们的依赖注入(inject)风格有疑问。例如,假设我有一个 DataProcessor具有 processData 的服务采用 uri 的方法参数,它需要读取该数据(可能是 xml、json 等),然后对其执行一些操作。 DataProcessor构造函数接受 DataReader 的实现知道如何读取特定文件类型的接口(interface)。以下是我正在谈论的一些示例服务:

// implementations of the DataReader interface
myApp.service('XmlDataReader', function() {
this.readData = function(uri) {
// read xml data from uri
}
}]);

myApp.service('JsonDataReader', function() {
this.readData = function(uri) {
// read json data from uri
}
}]);

// data processing service that takes in an implementation of a DataReader
myApp.service('DataProcessor', ['DataReader', function(DataReader) {

this.processData = function(uri) {
var readData = DataReader.readData(uri);

// process data and return it
}
}]);

从典型的依赖注入(inject) Angular 来看, DataReader 的特定类型可以传递到 DataProcessor并像这样使用:
var dataProcessor = new DataProcessor(new JsonDataReader());
var processedData = dataProcessor.processData('dataz.json');

AngularJS 的做法是什么?

最佳答案

做这样的事情:

myApp.service('DataProcessor', ['$injector', 'valueRecipeOfTheServicename', function($injector, valueRecipeOfTheServicename) {

this.processData = function(uri) {
var service = $injector.get(valueRecipeOfTheServicename);

// process data and return it
}
}]);

$injetcor.get() 检索服务

关于AngularJS 依赖注入(inject)交换实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20684374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com