Я создал директиву для отображения выпадающих списков (выбор форм). Однако я не могу найти способ отметить выбранный вариант.
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]"
Что с этим не так? Использование курчавых скобок прерывает его, конечно...
Ваша проблема связана с тем, что 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
<select>
вне директивы? Вы также должны знать, что вы эффективно создаете пользовательский элемент управления вводом (который просто использует<select>
под обложками), и поэтому вам следуетrequire: "ngModel"
а не привязывать его через контекст. Подробнее о создании пользовательских элементов управления вводом