Поэтому у меня есть следующий код:
<select id="basicInput" ng-model="MyCtrl.value">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
Но в консоли я нахожу это:
<select id="basicInput" ng-model="MyCtrl.value">
<option value="? object:null ?"></option>
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
Я уже видел этот вопрос, но все ответы, которые я нашел, были связаны либо с ng-вариантами, либо с ng-repeat. Этот код не использует ни один, так почему я беру эту проблему в первую очередь? Что еще более важно, как я могу запретить моей странице загружать этот тег с помощью фантомного варианта? Связано ли это с ng-моделью?
РЕДАКТИРОВАТЬ:
Поскольку я задал этот вопрос, я добавил в свой код следующее:
<select id="basicInput" ng-model="MyCtrl.value">
<option value="0"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
Я также установил Myctrl.value = 0. И все же я обнаружил, что с той же ошибкой. Идеи?
Этот вопрос уже ответил ранее. Проверьте этот URL. По их словам
Пустая опция генерируется, когда значение, на которое ссылается
ng-model
, не существует в наборе параметров, переданных вng-options
. Это происходит для предотвращения случайного выбора модели: AngularJS может видеть, что исходная модель либо не определена, либо нет в наборе параметров, и сама не хочет самостоятельно определять значение модели.
Вместо этого вы можете сделать это таким образом
<select id="basicInput" ng-model="MyCtrl.value">
<option value="" ng-if="false"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
Короче: пустая опция означает, что не выбрана допустимая модель (по действию я имею в виду: из набора параметров). Вам нужно выбрать допустимое значение модели, чтобы избавиться от этой пустой опции
Вы должны инициализировать MyCtrl.value до одного из значений, предоставляемых параметрами, в противном случае Угловой будет отображать пустой выбор, потому что выбранная модель не существует в списке параметров.
в MyCtrl:
$scope.value = 1;