Jadi terima kasih atas bantuan Anda, ditambah loop for-in yang saya pelajari dari postingan berikut: Cara menghasilkan CSS dengan loop dalam waktu lebih sedikit
Saya sekarang memiliki:
.for(@list, @code) {
& {
.loop(@i:1) when (@i =< length(@list)) {
@value: extract(@list, @i);
@code();
.loop(@i + 1);
}
.loop();
}
}
.role-varients(@orgType, @variants, @props, @type:child){
.for(@variants, {
& when (@type = append) {
&.@{orgType}.security_class_@{value} {
@props();
}
}
& when not (@type = append) {
.@{orgType}.security_class_@{value} {
@props();
}
}
});
}
@admin-roles: admin, admin_manager, admin_user, admin_manager_user;
@manager-roles: manager, admin_manager, manager_user, admin_manager_user;
@user-roles: user, admin_user, manager_user, admin_manager_user;
&.service_provider{
&.admin{
.role-varients(service_provider, @admin-roles, {display: block;});
th{
.role-varients(service_provider, @admin-roles, {display: table-cell;}, append);
}
button{
.role-varients(service_provider, @admin-roles, {display: inline-block;}, append);
}
}
&.manager{
.role-varients(service_provider, @manager-roles, {display: block;});
th{
.role-varients(service_provider, @manager-roles, {display: table-cell;}, append);
}
button{
.role-varients(service_provider, @manager-roles, {display: inline-block;}, append);
}
}
&.user{
.role-varients(service_provider, @user-roles, {display: block;});
th{
.role-varients(service_provider, @user-roles, {display: table-cell;}, append);
}
button{
.role-varients(service_provider, @user-roles, {display: inline-block;}, append);
}
}
}
&.client{
&.admin{
.role-varients(client, @admin-roles, {display: block;});
th{
.role-varients(client, @admin-roles, {display: table-cell;}, append);
}
button{
.role-varients(client, @admin-roles, {display: inline-block;}, append);
}
}
&.manager{
.role-varients(client, @manager-roles, {display: block;});
th{
.role-varients(client, @manager-roles, {display: table-cell;}, append);
}
button{
.role-varients(client, @manager-roles, {display: inline-block;}, append);
}
}
&.user{
.role-varients(client, @user-roles, {display: block;});
th{
.role-varients(client, @user-roles, {display: table-cell;}, append);
}
button{
.role-varients(client, @user-roles, {display: inline-block;}, append);
}
}
}
&.vendor{
&.admin{
.role-varients(vendor, @admin-roles, {display: block;});
th{
.role-varients(vendor, @admin-roles, {display: table-cell;}, append);
}
button{
.role-varients(vendor, @admin-roles, {display: inline-block;}, append);
}
}
&.manager{
.role-varients(vendor, @manager-roles, {display: block;});
th{
.role-varients(vendor, @manager-roles, {display: table-cell;}, append);
}
button{
.role-varients(vendor, @manager-roles, {display: inline-block;}, append);
}
}
&.user{
.role-varients(vendor, @user-roles, {display: block;});
th{
.role-varients(vendor, @user-roles, {display: table-cell;}, append);
}
button{
.role-varients(vendor, @user-roles, {display: inline-block;}, append);
}
}
}
Saya akan menggunakan loop for lain untuk menangani 3 blok utama [penyedia_layanan, klien, vendor] tetapi saat saya menggunakan .@{value} Saya kira cakupannya rusak karena memiliki loop dalam satu loop dan tidak memberikan hasil yang diharapkan .
Meskipun hal di atas masih terkesan panjang, namun yang pasti lebih baik daripada menulis setiap aturan secara manual.
Solusi saya muncul berkat masukan Harry jadi saya kira saya harus menandai jawabannya sebagai benar? Sekali lagi terima kasih semuanya ;)
person
user2115620
schedule
13.06.2016