2016-09-12 4 views
1

Я делаю первые шаги с помощью Angular.js, и у меня есть небольшая проблема, о которой я не знаю, как бороться с Angular. Я знаю много способов JQuery для ее решения, но я уверен, что он может существует Угловое путь:Получение внешних переменных внутри фабрики Angular.js

Во-первых, у меня есть выбора набора элементов с currentPlant в ng-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; 
    }]); 

Я мог бы установить data-plant атрибут в элементе опции, и получить выбранный с помощью JQuery, но я стараюсь избегать такого рода решений. Как вы справляетесь с этим?

ПРИМЕЧАНИЕ: Учитывать, что я просто хочу получить option выбранный при нажатии на кнопку и сделать различные get запросы к функции API`in того через службу.

Заранее спасибо.

ответ

2

Передайте значение в ngclick:

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

Затем добавьте его в фабричных аргументах:

o.towers = function(currentPlant){ 

    } 
Смежные вопросы