Если вам нужно показать детали по каждому клубу в отдельности, вам нужно установить свойство для каждого клуба отдельно, а не по clubs
; Также используйте Vue.set
для реактивного добавления нового свойства к объекту следующим образом:
const clubs = [
{
name: 'Tigers',
location: 'Manchester',
members: '22'
},
{
name: 'Dolphins',
location: 'Miami',
members: '19'
},
{
name: 'Bleu Sox',
location: 'Paris',
members: '13'
}
];
const app = new Vue({
el: '#app',
data: {
title: 'Here is a list',
clubs
},
methods: {
toggleDetails: function(club) {
this.$set(club, 'showDetails', !club.showDetails)
}
}
});
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<div id="app">
<ul>
<li v-for="club in clubs" v-on:click="toggleDetails(club)">
<h1>{{club.name}}</h1>
<div v-show="club.showDetails">
<p>{{club.location}}</p>
<p>{{club.members}}</p>
</div>
</li>
</ul>
</div>
[Obsolete("This is an obsolete property")]
Это - один из моих фаворитов. Позволяет Вам отмечать устаревшее свойство/метод, который вызовет предупреждение компилятора (дополнительно, ошибка компилятора) на сборке.
Только некоторые...
синхронизация, встраивание, и т.д.:
[MethodImpl]
компонентная модель:
[TypeDescriptor], [DisplayName], [Editor]
сериализация:
[Serializable], [DataMember], [XmlElement], [XmlAttribute], [NonSerialized], etc
декларативная безопасность:
[PrincipalPermission]
весь материал COM...
Я хотел всесторонний список атрибутов c# в течение долгого времени, но никогда не находил список в документах MSDN или нигде. Я думаю, что это - одна из более слабых частей для их документации.
Я использую [XmlIgnore], если я хочу исключить свойство из XML-сериализации.
Локализуемый, а также ListBindable может быть интересным для пользовательских разработчиков компонента.
Если Вы используете Description
и Category
в многоязычном UIs затем можно найти полезным основанные на ресурсе версии (отраженный от System.Windows.Forms
):
[AttributeUsage(AttributeTargets.All)]
internal sealed class SRDescriptionAttribute : DescriptionAttribute
{
private bool replaced;
public SRDescriptionAttribute(string description) : base(description)
{
}
public override string Description
{
get
{
if (!this.replaced)
{
this.replaced = true;
base.DescriptionValue = SR.GetString(base.Description);
}
return base.Description;
}
}
}
[AttributeUsage(AttributeTargets.All)]
internal sealed class SRCategoryAttribute : CategoryAttribute
{
public SRCategoryAttribute(string category) : base(category)
{
}
protected override string GetLocalizedString(string value)
{
return SR.GetString(value);
}
}
где SR
обертка к соответствующему ResourceManager
.
Я использую его довольно часто на перечислениях. Когда-нибудь имеет то или "неизвестное" значение "по умолчанию" в перечислении, но Вы не обязательно хотите связанный с управлением, как выпадающее? Добавьте пользовательский атрибут или используйте существующий, для представления объектов, которые не должны быть видимыми.
Я делаю большую работу с платформами, которые имеют брокеров события и инжекцию политики, и атрибуты неоценимы когда дело доходит до украшения событий с дополнительными метаданными или слабой связью событий.
Существует несколько довольно новых инструментов как PostSharp (http://www.postsharp.org/), можно использовать для инкапсуляции поведения в атрибутах. Свяжите хорошие примеры на том сайте; удивительно, насколько более простой можно сделать код через те шаблоны...