Я пытаюсь построить двойной выбор с нулевым параметром.Выбор фильтра на основе другого выбора углового и сохранить первый ряд
Один выбор фильтруется в соответствии с первым выбранным вариантом. Проблема у меня есть, я хочу сохранить первую строку «null» даже после фильтра.
Я сделал плункер, основанный на решении нулевой опции, которую я видел. Здесь находится плункер: demo
Я пытаюсь выбрать страну и в городах, сохраните параметр «null» (anyCity) в качестве выбираемой опции. Каков наилучший подход для достижения этого?
(Моя исходная задача состоит из двойного фильтра -> выберите город также фильтрация страны)
Html:
<body ng-controller="DemoCtrl">
<h3>Countries</h3>
<p>Selected: {{country.selected || (country.selected === null ? 'null' : '')}}</p>
<ui-select ng-model="country.selected" theme="bootstrap" ng-disabled="disabled" style="width: 300px;">
<ui-select-match placeholder="Select or search a country in the list...">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="country in countries | filter: $select.search" null-option="anyCountry">
<span ng-bind-html="country.name | highlight: $select.search"></span>
<small ng-bind-html="country.code | highlight: $select.search"></small>
</ui-select-choices>
</ui-select>
<h3>Cities</h3>
<p>The loose-null option treats undefined the same as null.</p>
<p>Selected: {{country2.selected || (country2.selected === null ? 'null' : '')}}</p>
<ui-select ng-model="country2.selected" theme="bootstrap" ng-disabled="disabled" style="width: 300px;">
<ui-select-match placeholder="Select or search a city in the list...">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="city in cities | filter: {country: country.selected.code}" null-option="anyCity" loose-null>
<span ng-bind-html="city.name | highlight: $select.search"></span>
<small ng-bind-html="city.code | highlight: $select.search"></small>
</ui-select-choices>
</ui-select>
</body>
</html>
Спасибо, я на самом деле пробовал что-то вроде этого, похоже, работает, только я использовал значения, разделенные запятыми, а не массив ... Предполагается, что он работает? (например, ваш первый пример) –
Да строка с значениями, разделенными запятой, будет работать, потому что 'filter:' соответствует подстроке [(docs)] (https://docs.angularjs.org/api/ng/filter/filter). Как уже упоминалось, я предпочитаю подход к функции области видимости для ясности и в случае изменения данных, но ваш должен работать надежно. – sheilak