Я довольно долго просматривал SO, но ни один из даже отдаленно близких мне вопросов, похоже, не содержит ответа на этот вопрос.
Ситуация следующая:
Я заполняю раскрывающийся список (или выбираю по вашему желанию) с помощью AngularJS (^ 1.6.2) данными, полученными из базы данных. Эти данные помещаются в этот выбор с помощью ng-options
, при этом все правильно установлено и все.
Я пытаюсь добиться того, чтобы параметр NULL
добавлялся в этот список параметров, но не к объекту $scope
, содержащему извлеченные данные.
Я уточню код:
<select ng-options="item as item.name for item in items track by item.id"
ng-model="forms.formDataObject.item">
</select>
Это генерирует список опций, что-то вроде этого:
<select ...>
<option value="1">Item 1</option>
<option value="2">Item 2</option>
<option value="3">Item 3</option>
...
</select>
Я попытался добавить параметр NULL
в этот раскрывающийся список, используя следующий фильтр Angular:
app.filter('addNullOption', () => {
return (input) => {
if (!input[0].null_option) {
var emptyObj = angular.copy(input[0]);
Object.keys(emptyObj).forEach((key) => {
emptyObj[key] = null;
});
emptyObj.null_option = true;
input.unshift(emptyObj);
}
return input;
};
})
А затем применить фильтр в ng-options
, как и с другими фильтрами.
Это работает, но добавляет параметр NULL
к объекту $scope
вместо того, чтобы быть доступным только в $scope
этого раскрывающегося списка. Я не хочу, чтобы это произошло, потому что другие раскрывающиеся списки в приложении используют один и тот же объект $scope
для заполнения раскрывающегося списка, и они не должны иметь этот параметр NULL
.
Подводя итог, вот мой вопрос: я хотел бы иметь возможность добавить параметр NULL
в предварительно заполненный раскрывающийся список, только в $scope
этого конкретного раскрывающегося списка.
Может ли кто-нибудь направить меня в правильном направлении?
items
28.03.2017