Вы можете добавить другое свойство к опциям флажка, чтобы найти, которые отмечены, как показано ниже,
options: [
{ key: 'f', label: 'Fishing', selected:false },
{ key: 'c', label: 'Cooking', selected:true}
]
и связать это свойство selected
, используя ngModel
Обновление 1: На основе стекаблиц
Поскольку вы связываете с ngModel
, вам не нужно использовать логику для переключения на истину и ложь, поэтому, пожалуйста, удалите эту логику, и я зарегистрировал содержимое, чтобы увидеть, изменяется ли оно или не так, как показано ниже
{{option.label}}
changeData
Функция
changeData(currentOption,allOptions){
console.log(currentOption);
console.log('All options changed with ngModel',allOptions)
}
Примечание. Я использовал функцию ngModelChange
, встроенную в click
, чтобы увидеть изменения
Вы спросили об обосновании разработчиков Python. Я не могу говорить за них, но никакое другое поведение не имеет смысл. Функция может или возвратить значение, или она может повысить исключение; это не может сделать обоих. Цель "наконец" пункт должен предоставить код очистки, который, как "гарантируют", будет выполнен, независимо от исключений. Вставляя оператор возврата наконец пункт, Вы объявили, что хотите возвратить значение, независимо от того, что, независимо от исключений. Если бы Python вел себя, как Вы просите и повысили исключение, он нарушал бы условия контракта "наконец" пункт (потому что ему не удалось бы возвратить значение, которое Вы сказали ему возвращать).
исключение исчезает, когда Вы используете
return
внутренняя частьfinally
пункт... Это документируется где-нибудь?
, Если наконец присутствует, это указывает вЂcleanup’ обработчик. Пункт попытки выполняется, включая любого кроме и выражения else. Если исключение происходит в каком-либо из пунктов и не обработано, исключение временно сохраняется. Наконец пункт выполняется. Если существует сохраненное исключение, оно повторно повышено в конце наконец пункт. , Если наконец пункт повышает другое исключение или выполняет оператор возврата или оператор завершения, сохраненное исключение потеряно.
Вот интересное сравнение для возврата в наконец блоке, среди - Java/C#/Python/JavaScript: ( ссылка архива )
Возврат От Наконец
Как раз сегодня я помогал с некоторой ошибкой в Java и столкнулся с интересной проблемой - что происходит, если Вы используете возврат в операторе попытки/выгоды? Должен наконец, раздел разжигает или нет? Я упростил проблему до следующего фрагмента кода:
, Что выполнение до конца кодирует печать?
class ReturnFromFinally { public static int a() { try { return 1; } catch (Exception e) {} finally{ return 2; } } public static void main(String[] args) { System.out.println(a()); } }
Мое исходное предположение было бы, который оно должно распечатать
1
, я звонюreturn
, таким образом, я принимаю, каждый будет возвращен. Однако это не имеет место:я понимаю логику, наконец разделяю, должен быть выполнен, но так или иначе я чувствую себя неловко об этом. Давайте посмотрим то, что C# делает в этом случае:
class ReturnFromFinally { public static int a() { try { return 1; } catch (System.Exception e) {} finally { return 2; } } public static void Main(string[] args) { System.Console.WriteLine(a()); } }
я предпочитаю много скорее это поведение, поток управления не может быть смешан с в наконец пункте, таким образом, это препятствует тому, чтобы мы стреляли себе в ногу. Только ради полноты, давайте проверим то, что делают другие языки.
Python:
def a(): try: return 1 finally: return 2 print a()
JavaScript:
<script> function ReturnFromFinally() { try { return 1; } catch (e) { } finally { return 2; } } </script> <a onclick="alert(ReturnFromFinally());">Click here</a>
существует не наконец пункт в C++ и PHP, таким образом, я не могу испытать последние два языка, у меня есть компилятор/интерпретатор для.
Наш небольшой эксперимент приятно показал, что C# имеет самый хороший подход к этой проблеме, но я был вполне удивлен учиться, что все другие языки решают проблему тот же путь.
Возврат из наконец не хорошая идея. Я знаю, что C# конкретно запрещает выполнение этого.