这是与angularjs的第一次互动。这是第一次。我怎样才能调用该功能并在另一个控制器中获取这些物品?
我正在使用AngularJS加载CSV文件
var Mymodule = angular.module('Mymodule', []);
Mymodule.factory('Items', ['$http', function($http){
var Url = "data/ex.csv";
var Items = $http.get(Url).then(function(response){
return csvParser(response.data);
});
return Items;
}]);
我需要获取返回的值来对我拥有的数据进行一些过滤吗?
function doSomethingWithRows(rows) {
//Mymodule.Items
// How to call data here.
}
更新 基于第一个答案
<script>
var Mymodule = angular.module('Mymodule', []);
Mymodule.factory('Items', ['$http', function($http){
var Url = "data/ex.csv";
var Items = $http.get(Url).then(function(response){
return csvParser(response.data);
});
return Items;
}]);
var $injector = angular.injector();
$injector.invoke(['Items', function(Items){ console.log(Items) }]);
</script>
错误:
Uncaught Error: Unknown provider: ItemsProvider <- Items
答案 0 :(得分:1)
您可以使用$injector
:
var $injector = angular.injector(["ng", "MyModule"]);
$injector.invoke(['Items', function(Items){
/* do stuff */
console.log(Items); // e.g. print the Items
}]);
$injector
用于检索某些提供程序(例如您的Items
工厂)定义的对象实例。
答案 1 :(得分:1)
我会扩展你的工厂,这样你就可以调用一个函数来获得结果。
Mymodule.factory('Items', [
'$http',
function($http){
var Items;
this.loadItems = function loadItems() {
var Url = "data/ex.csv";
$http.get(Url).then(function(response){
Items = csvParser(response.data);
});
}
this.returnItems = function returnItems() {
return Items;
}
}]);
然后在你的控制器中:
Mymodule.controller("Controller", [
"Items",
function(Items){
Items.loadItems();
function doSomethingWithRows(rows) {
var items = Items.returnItems();
}
}
]);