2015-09-03 2 views
0

Я работаю с выбранным выбором, я добавил вызов функции, когда происходит событие ng-click, но это ничего не делает, когда я делаю вызов той же функции в кнопке он работает, почему это?Выбранный выбор не вызывает функцию по ng-click

ng-change не работает, тем более, что он ест мои варианты и оставляет только первый.

мой выбор Код:

<select ng-model="ind_oferta" multiple class="control-group chosen-select" chosen > 
       <optgroup label="Oferta"> 
       <option value=""> </option> 
       <option ng-click="aplicarFiltro()" ng-repeat="menuOpcion in menu[0].opciones.oferta" value={{menuOpcion.id}}> 
        {{menuOpcion.tipo}}</option> 
       </optgroup> 
     </select> 

функция очень проста, это просто предупреждения JavaScript Alert

$scope.aplicarFiltro = function(){ 

     alert("hello"); 

    } 

и я думаю, что не стоит ставить код кнопки, что один работает так .. .

EDIT: Я изменил код выбора на это, все еще не делая вызов функции, помогите!

<select multiple class="control-group chosen-select" chosen style="width:250px;" 
       ng-model="ind_oferta" ng-click="aplicarFiltro();" 
       ng-options="menuOpcion.id as menuOpcion.tipo for menuOpcion in menu[0].opciones.oferta"> 
       <option>--</option> 
      </select> 
+0

вы используете Избранный JQuery непосредственно или с помощью директивы для углового (https://github.com/Localytics/угловой выбрано)? – tiblu

+0

с директивой, сам выбор в порядке, я думаю, –

ответ

2

Вы должны использовать ng-options директиву вместе с ng-model (вы можете добавить одну <option> в качестве значения по умолчанию). Это вероятно, будет выглядеть примерно так:

<select ng-options="menuOpcion.tipo for menuOpcion in menu[0].opciones.oferta" 
     ng-model="selected" 
     ng-change="aplicarFiltro()" chosen multiple> 
    <option value=""></option> 
</select> 

Существует много вариантов настройки, так что лучше, если вы проверить документацию.

Чтобы получить вариант, который был удален пользователем вы могли бы сделать что-то вроде этого в контроллере:

var previousSelection = []; 
$scope.changedSelection = function() { 
    // Check if the current selection contains every element of the previous selection 
    for (var i = 0; i < previousSelection.length; i++) { 
    if ($scope.selectModel.indexOf(previousSelection[i]) == -1) { 
     // previousSelection[i] was deselected   
    } 
    } 
    // Set the previous selection to the current selection 
    previousSelection = $scope.selectModel; 
} 
+1

Это, вероятно, потому, что 'menuOpcion' сам по себе является объектом, а не строкой. Я отредактировал выражение внутри 'ng-options', вы можете попробовать его снова? – muenchdo

+0

Да, теперь он заполняется текстом, но функция все еще не работает, любые идеи, почему это происходит? –

+1

Я также добавил 'ng-change'. Эта функция будет вызываться всякий раз, когда ваш выбор изменится. В зависимости от того, насколько сложным является ваш фильтр, вы можете просто привязать свойство 'selected' непосредственно к вашему фильтру. – muenchdo

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

  • Нет связанных вопросов^_^