【问题标题】:Play 2.0.1 - Scala templates string concatting + re-usable code blockPlay 2.0.1 - Scala 模板字符串连接 + 可重用代码块
【发布时间】:2012-05-14 01:06:52
【问题描述】:

虽然只是一个小问题,但根据文档,我应该能够创建一个可重用的块。可能是我缺乏 Scala 经验让我在这里榨汁......

我有一个传递给.scala.html 文件的字符串列表。字符串是不带“.js”的 javascript 文件引用。

@jsFileWithExtension(file: String) = @{
  val newFile = file + ".js
}
@for(jsFile <- headJs) {
   <script src="/assets/javascripts/@jsFileWithExtension("@jsFile")"></script>
}

它目前正在加载没有扩展名的 jsFile。

【问题讨论】:

    标签: scala playframework playframework-2.0


    【解决方案1】:

    试试这个:

    @jsFileWithExtension(file: String) = @{ file + ".js" }
    
    
    @for(jsFile <- headJs) {
       <script src="/assets/javascripts/@jsFileWithExtension(jsFile)"></script>
    }
    

    您的jsFileWithExtension 需要返回一个值。现在它返回Unit。然后正如丹尼尔指出的那样,函数的参数不需要引号或魔术@ char。

    【讨论】:

      【解决方案2】:

      为什么不简单地附加一个 .js 呢?

      @for(jsFile <- headJs) {
         <script src="/assets/javascripts/@(jsFile).js"></script>
      }
      

      【讨论】:

      • 这里的关键是包含在 () 中,否则 .js 看起来像一个方法调用来播放
      【解决方案3】:

      这不可行吗:

      @jsFileWithExtension(jsFile)
      

      如,jsFileWithExtension 参数不带引号和 @,因为这已经是 Scala 代码?

      【讨论】:

      • 不,它没有(至少对我来说不是!)我可能应该指出我尝试过的方法:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 2011-09-08
      • 2011-06-09
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      相关资源
      最近更新 更多