Pergunta

How can I reference dojo methods in Dart? I am specificaly trying to use ESRI's Javascript API, which is built on top of dojo within dart by referencing Google's article on on javascript/Dart interoperability

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
  <title>Home Extent</title>
  <link rel="stylesheet" type="text/css" href="http://js.arcgis.com/3.8/js/esri/css/esri.css">
  <style>
    html, body, #map {
      padding:0;
      margin:0;
      height:100%;
    }
    #HomeButton {
      position: absolute;
      top: 95px;
      left: 20px;
      z-index: 50;
    }
  </style>
  <script src="//js.arcgis.com/3.8/"></script>
  <script>

    require([
      "esri/map", 
      "esri/dijit/HomeButton",
      "dojo/domReady!"
    ], function(
      Map, HomeButton
    )  {

      var map = new Map("map", {
    center: [-56.049, 38.485],
    zoom: 3,
    basemap: "streets"
      });

      var home = new HomeButton({
    map: map
      }, "HomeButton");
      home.startup();

    });
  </script>
</head>
<body>
  <div id="map" class="map">
    <div id="HomeButton"></div>
  </div>
</body>
</html>

I think I have a good grasp on how to call methods and convert objects but I can't figure out how to call dojo methods (specifically the Dojo 1.7+ method), in this case "requires".

Foi útil?

Solução

With dart:js the following should work :

import 'dart:js' as js;
main() {
  js.context.callMethod('require', [new js.JsArray.from(["esri/map",
      "esri/dijit/HomeButton", "dojo/domReady!"]), (Map, HomeButton) {
      var map = new js.JsObject(Map, ["map", new js.JsObject.jsify({
          'center': [-56.049, 38.485],
          'zoom': 3,
          'basemap': "streets"
        })]);

      var home = new js.JsObject(HomeButton, [new js.JsObject.jsify({
          map: map
        }), "HomeButton"]);
      home.callMethod('startup');
    }]);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top