gpt4 book ai didi

javascript - Angular 创建 "third party module"、处理数据或获取数据?

转载 作者:行者123 更新时间:2023-11-28 00:21:29 24 4
gpt4 key购买 nike

所以我有一个模块,主要用作“第三方”模块。目的是创建一些可以轻松适应其他 Angular 应用程序的东西。所以到目前为止我所拥有的是这样的。

别人的申请:

var myApp = angular.module( 'myApp', ['thirdPartyModule'] );

我的第三方模块:

angular.module('thirdPartyModule', [])
.controller('thirdPartyController', function($scope, getDataForThirdPartyModule)
{
getDataForThirdPartyModule.getData().then(function(data)
{
$scope.thirdPartyData = data;
console.log($scope.thirdPartyData);
});
})
.factory('getDataForThirdPartyModule', function($http)
{
return {
getData: function (callback) {
return $http.get('/path/to/sample-data.json').then(function(response)
{
return response.data;
});
}
}
});

目前这适用于硬编码的 URL 路径:

$http.get('/path/to/sample-data.json')

但是我想知道什么是最好的方法?我的想法是不对 URL 路径进行硬编码,而是动态地由主应用程序或模块确定。例如,我的第一个想法是这样的......

$http.get($scope.thirdpartyUrl);

但这不起作用,或者看起来不对。那么做这样的事情什么是好的或正确的方法呢?

最佳答案

您可以使用 provider :

.provider('getDataForThirdPartyModule', function () {
// In the provider function, you cannot inject any
// service or factory. This can only be done at the
// "$get" method.

this.url = '/path/to/sample-data.json'; // default url

this.$get = function ($http) {
var url = this.url;
return {
getData: function (callback) {
return $http.get(url).then(function (response) {
return response.data;
});
}
}
};

this.setUrl = function (url) {
this.url = url;
};
});

然后您可以在应用程序中配置您的提供商:

myApp.config(function(getDataForThirdPartyModuleProvider){
getDataForThirdPartyModuleProvider.setUrl('/path/to/sample-data.json');
});

检查this plnkr .

关于javascript - Angular 创建 "third party module"、处理数据或获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29972419/

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