title: "Cannot find an implicit ExecutionContext" error in scala.js example app.
body: <p>Here is an example from the Hands-on Scala.js ebook:</p>
  
  <pre><code>package webpage
  
  import org.scalajs.dom.ext.Ajax
  
  import scala.scalajs.js
  import scala.scalajs.js.annotation.JSExport
  import scalatags.JsDom.all._
  import org.scalajs.dom
  import dom.html
  
  @JSExport
  object HelloWorld1 extends {
    @JSExport
    def main(target: html.Div) = {
  
      lazy val box = input(
        `type`:="text",
        placeholder:="Type here!"
      ).render
  
      lazy val output = div(
        height:="400px",
        overflowY:="scroll"
      ).render
  
      box.onkeyup = (e: dom.Event) =&gt; {
        output.innerHTML = "Loading..."
        fetchWeather(box.value)
      }
  
      target.appendChild(
        div(
          h1("Weather Search"),
          p(
            "Enter the name of a city to pull the ",
            "latest weather data from api.openweathermap.com!"
          ),
          p(box),
          hr, output, hr
        ).render
      )
  
      def fetchWeather(query: String) = {
        val searchUrl =
          "http://api.openweathermap.org/data/" +
            "2.5/find?type=like&amp;mode=json&amp;q=" +
            query
  
        for{
          xhr &lt;- Ajax.get(searchUrl)
          if query == box.value
        } js.JSON.parse(xhr.responseText).list match{
          case jsonlist: js.Array[js.Dynamic] =&gt;
            output.innerHTML = ""
            showResults(jsonlist, query)
          case _ =&gt;
            output.innerHTML = "No Results"
        }
      }
      def showResults(jsonlist: js.Array[js.Dynamic], query: String) = {
        for (json &lt;- jsonlist) {
          val name = json.name.toString
          val country = json.sys.country.toString
          val weather = json.weather.pop().main.toString
  
          def celsius(kelvins: js.Dynamic) = {
            kelvins.asInstanceOf[Double] - 273.15
          }.toInt
  
          val min = celsius(json.main.temp_min)
          val max = celsius(json.main.temp_max)
          val humid = json.main.humidity.toString
          val (first, last) = name.splitAt(query.length)
          output.appendChild(
            div(
              b(span(first, backgroundColor:="yellow"), last, ", ", country),
              ul(
                li(b("Weather "), weather),
                li(b("Temp "), min, " - ", max),
                li(b("Humidity "), humid, "%")
              )
            ).render
          )
        }
      }
    }
  }
  </code></pre>
  
  <p>Got an error when compiling:</p>
  
  <pre><code>[info] Compiling 1 Scala source to /Users/kaiyin/personal_config_bin_files/workspace/workbench-example-app/target/scala-2.11/classes...
  [error] /Users/kaiyin/personal_config_bin_files/workspace/workbench-example-app/src/main/scala/HelloWorld1.scala:51: Cannot find an implicit ExecutionContext. You might pass
  [error] an (implicit ec: ExecutionContext) parameter to your method
  [error] or import scala.concurrent.ExecutionContext.Implicits.global.
  [error]         if query == box.value
  [error]                  ^
  [warn] /Users/kaiyin/personal_config_bin_files/workspace/workbench-example-app/src/main/scala/HelloWorld1.scala:53: non-variable type argument scala.scalajs.js.Dynamic in type pattern scala.scalajs.js.Array[scala.scalajs.js.Dynamic] is unchecked since it is eliminated by erasure
  [warn]         case jsonlist: js.Array[js.Dynamic] =&gt;
  [warn]                           ^
  [warn] one warning found
  [error] one error found
  [info] workbench: Checking example-fastopt.js
  [info] workbench: Checking webpage-fastopt.js
  [error] (compile:compile) Compilation failed
  [error] Total time: 0 s, completed 7 sept. 2015 12:51:38
  78. Waiting for source changes... (press enter to interrupt)
  </code></pre>
  
  <p>What went wrong here?</p>