2016-04-06 15 views
2

Bir scala parametresi kullanarak bu html bağlantı etiketinin href özniteliğini kullanmaya çalışıyorum ve işe yaramayacak gibi görünmüyor. Bir dize için ölçek şablon sözdizimini çal

@{ 
    val key = p.getKey() 
    if(key == "facebook") { 
    <a href="/authenticate/@(key)">Sign in with facebook</a> 
    } else if (key == "twitter"){ 
    <a href="/authenticate/{key}"> 
     <span>Sign in with twitter {key} (this works)</span> 
    </a> 
    }  
} 

Her iki örnekte de href özelliği düzgün oluşturmayan, ancak html özelliğinin dışında yayılma etiketinde {anahtar} kullandığınızda, düzgün anahtarını basar.

+0

'@ {key}'? İlk href örneğinde parantez kullanıyorsunuz ve ikincisinde '@' yok. – Eric

cevap

1

Burgu, else-if desteği sağlamamaktadır. Bu size sorunlara neden oldu, çünkü ben (asla denemedim) düşünüyorum iş yapabileceğiniz dinamik bir blok @{} sarılmış. Ancak bu genellikle işlerin nasıl yapıldığını değil, bunun yerine desen eşlemesini kullanmayı tercih eder. p.getKey tekrarlanması ve href azaltmak için ancak aynı zamanda (yerine vals) defining ile yeniden kapsamlı değerlerini tanımlayabilir, işleri

@p.getKey() match { 
    case "facebook" => { 
     <a href="/authenticate/@{p.getKey()}">Sign in with facebook</a> 
    } 
    case "twitter" => { 
     <a href="/authenticate/@{p.getKey()}"> 
      <span>Sign in with twitter - key @{p.getKey()} </span> 
     </a> 
    } 
} 

Now: Burada

kodunuzu gibi görünebilir nasıl kendisi: (onun sadece bir kez kullanılabilir beri)

@defining(p.getKey()) { key => 
    @defining(s"/authentication/$key") { href => 
     @key match { 
      case "facebook" => { 
       <a href="@href">Sign in with facebook</a> 
      } 
      case "twitter" => { 
       <a href="@href"> <span>Sign in with twitter - key @key</span> </a> 
      } 
     } 
    } 
} 

mesajı daha da kolay olur tuşu hariç hepsi aynı olduğunu varsayarak, desen eşleştirme ve tanımlama href hurda:

@defining(p.getKey()) { key => 
    <a href="/authentication/@key">Sign in with @key</a> 
}