在Angular.js工厂中获取外部变量

时间:2016-09-12 00:39:51

标签: javascript jquery angularjs

我正在使用Angular.js的第一步,我面临一个小问题,我不知道如何处理Angular。我知道很多jQuery方法可以解决它,但我确信它可能存在一种Angular方式:

首先,我有一个选择元素集currentPlantng-model

  <select class="form-control" name="planta" ng-model='currentPlant' ng-options='plant.name for plant in plants' >
  </select>

我将当前名称打印为页面标题,我在更改所选值时看到此元素更新,因此我确信 currentPlant正在正确更新

<h1>{{ currentPlant ? currentPlant.name : 'Seleccione una planta'}}</h1>

现在我有以下按钮:

<button class='btn btn-primary' ng-click='loadTowers()'>
  Cargar torres
</button>

按下按钮时,执行loadTowers功能,现在问题开始时。我已经在控制器中设置了loadTowers函数:

$scope.loadTowers = plants.towers;

plant是一个角度服务,它在里面实现了towers函数。我需要在此函数中获取currentPlant的值。看看:

.factory('plants', ['$http',function($http){
  var o = {
    plants: [],

    towers : []
  };


  o.towers =  function(){
     var id = ¿?; // I NEED SET THIS VARIABLE WITH THE currentPlant.id VALUE 
     $http.get('/api/v1/plants/'+id+'/towers')
     .success(function(data){
         angular.copy(data, o.towers);
      })
     }
    return o;
   }]);

我可以在option元素中设置一个data-plant属性,并通过jQuery获取所选属性,但我正在尝试避免使用这种解决方案。你怎么处理这个?

注意:考虑到我只是想在我按下按钮时选择option并对API执行不同的get请求。服务。

提前致谢。

1 个答案:

答案 0 :(得分:2)

传递ngclick中的值:

     <button ng-click='loadTowers(currentPlant)'>

然后在工厂args中添加它:

    o.towers =  function(currentPlant){

    }