Получение выбранной модели в угловой директиве select

0

Я создал директиву для отображения выпадающих списков (выбор форм). Однако я не могу найти способ отметить выбранный вариант.

html-форма

 <div content-selects ng-model="ctrl.contentSelects.riskStatus" selection="oneWMS.riskStatusId"></div> <!-- oneWMS.riskStatusId -->

директива

function contentSelects(){
    return {
        restrict: 'AE',
        templateUrl: '/app/Directives/contentSelects.tpl.html',
        replace:true,
        scope: {
            ngModel: '=',
            selection: '='
        },
        controller:function($scope){

        },
        link: function (scope, element, attrs) {
           scope.selectedModel = scope.ngModel[attrs.selection];

            scope.isChanged = function () {
                //console.log("changed");
            }

            element.removeAttr('id');

        }
    };
}// end function contentSelects

Вот где я не понимаю: шаблон директивы

<div class="input-group">
<select id="{{id}}">
<option value="model.refId" ng-repeat="model in ngModel track by model.refId" ng-model="ngModel[selection]" >{{model.value}} *** {{selection}} *** {{ngModel[selection]}}</option>
</select>
</div>

В фактическом значении {{ngModel[selection]}} дает мне то, что я хочу (строка целевой модели), но когда привязана к ng-модели, она ничего не извлекает:/

ng-model="ngModel[selection]"

Что с этим не так? Использование курчавых скобок прерывает его, конечно...

  • 0
    Можете ли вы положить свой код в Plunkr?
  • 0
    Покажите образец ваших данных. Вы пробовали <select> вне директивы? Вы также должны знать, что вы эффективно создаете пользовательский элемент управления вводом (который просто использует <select> под обложками), и поэтому вам следует require: "ngModel" а не привязывать его через контекст. Подробнее о создании пользовательских элементов управления вводом
Показать ещё 2 комментария
Теги:
directive

1 ответ

2
Лучший ответ

Ваша проблема связана с тем, что ngModel включен в элемент option. Вы должны переместить его, чтобы выбрать элемент.

демонстрация

<div class="input-group">
  <select ng-model="selectedModel" >
    <option ng-value="model" ng-repeat="model in ngModel">{{model}}         
    </option>
  </select>
</div>

А также посмотрите https://docs.angularjs.org/api/ng/directive/ngOptions

  • 0
    Это отличный ответ, я пытался применить его к моему Plunkr, но это все тот же результат. Вы понимаете почему? plnkr.co/edit/YUdXrRO0lhzxp7kIlTbs
  • 1
    Используйте ng-options, потому что этот способ не поддерживается angular 1.4. Я использовал угловой 1.2.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню