Я пытаюсь выполнить нечувствительность к регистру привязки ng-модели к раскрывающемуся динамическому выбору с помощью AngularJS.AngularJS привязка к регистру без привязки к раскрывающемуся списку динамического выбора без изменения значения ng-bind в нижнем или верхнем регистре
, проходя через различные другие relavent ответов из стека через поток, я придумал что-то вроде ниже на взгляде, здесь CASEINSENSITIVE-варианта есть директива, которую я придумал ссылки следующего решения
AngularJS case-insensitive binding to a static select drop-down
HTML:
<select id="dcName" caseinsensitive-options="" ng-model="DC.name" class="form-control">
<option value="">--- Please Select ---</option>
<option ng-repeat="dataCenter in inventoryDataCenters" value="{{dataCenter}}">{{dataCenter}}</option>
</select>
директива код расслоение плотной:
app.directive('caseinsensitiveOptions', function() {
return {
restrict: 'A',
require: ['ngModel', 'select'],
link: function(scope, el, attrs, ctrls) {
var ngModel = ctrls[0];
ngModel.$formatters.push(function(value) {
var option = [].filter.call(el.children(), function(option) {
return option.value.toUpperCase() === value.toUpperCase()
})[0];
return option ? option.value : value
});
}
}
});
Ожидаемый результат
, когда я что-то передать, как это для $ scope.inventoryDataCenters = [ "TEST1", "test2", TEST3]; и ng-model для DC.name имеет значение TesT1.
Выпадающий список должен показывать TEST1, делая нечувствительный к регистру регистр. Теперь этого не происходит. Вышеупомянутое решение работает идеально, когда у нас есть статическое падение.
вещи, которые необходимо учитывать, что выбор находится внутри DIV, который нг-повторов, как показано ниже
ng-repeat="DC in workflowData.project_data.service_info.variables.service_data['data-center']"
и нг-модель для выбора DC.name выводится из приведенного выше массива постоянного тока.
почему бы вам не только дезинфицировать данные, а не пытаться заставить рамки для борьбы с ним? Разве не имело бы смысла просто преобразовывать данные в правильный случай в контроллере, прежде чем пытаться назначить его вашей модели? – Claies
Я понимаю, но требование не изменять данные .. любым другим способом сделать это? – nparvez
Я думаю, что исправление модели данных, чтобы ее можно было использовать в контроллере, это не то же самое, что «изменение данных», если только вы не прекратите изменение модели, по какой-то причине ... Вы всегда можете клонировать данные и использовать клон, не оказывая никакого влияния на исходную информацию, все равно было бы лучше, чем пытаться это сделать. – Claies