Angularjs добавляет опцию со значением = "?" в select с предопределенным параметром value = "", когда ng-model - пустая строка. Как можно сопоставить пустое строковое значение с параметром value = "" и избежать значения параметра = "?"?
Я не вижу этой проблемы на angularjs 1.4.9 и ниже. Также он отлично работает, когда значение области является нулевым, а не пустой строкой.
контроллер и директива
.controller('Ctrl', ['$scope', function($scope) {
$scope.value = '';
}])
.directive('simpleDropdown', function() {
return {
restrict: 'E',
scope: {
unselectedText: '@'
},
template: '<select ng-options="x.key as x.description for x in lookupModel">' +
'<option value="" selected="selected">{{ unselectedText }}</option>' +
'</select>',
replace: true,
compile: function compile() {
return {
post: function postLink(scope) {
scope.lookupModel = [{
'key': 'Call',
'description': 'Call someone'
}, {
'key': 'Email',
'description': 'Email to someone'
}];
}
};
}
};
})
HTML
<simple-dropdown ng-model="value" unselected-text="Please select.."></simple-dropdown>
Я ожидаю, что $ scope.value = '' сопоставлено с параметром value = "" Пожалуйста, выберите, но в действительности angularjs добавляет пустое значение параметра = "?" выбрать.
Полный пример: https://plnkr.co/edit/8dU6lFBEt0VL5IFW5Nfc?p=preview