繁体   English   中英

如何在JS函数中调用AngularJS函数

[英]How can I call AngularJS function in JS function

这是与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 

你可以使用$injector

var $injector = angular.injector(["ng", "MyModule"]);
$injector.invoke(['Items', function(Items){ 
  /* do stuff */ 
  console.log(Items);  // e.g. print the Items
}]);

$injector用于检索某些提供程序(例如,您的Items工厂)定义的对象实例。

小提琴

我会扩展你的工厂,这样你就可以调用一个函数来获得结果。

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();
        }
    }
]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM