Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果变量在类外的函数中声明,如何在类内定义变量_Javascript_Json - Fatal编程技术网

Javascript 如果变量在类外的函数中声明,如何在类内定义变量

Javascript 如果变量在类外的函数中声明,如何在类内定义变量,javascript,json,Javascript,Json,我创建了一个传单映射,我想为json文件中的每个元素创建一个标记。但问题是我不知道如何在我的类中定义“nosDonnee”变量。我的代码 class carte { constructor() { this.map = L.map("map").setView([45.764043, 4.835659], 12); this.calque = L.tileLayer( "https://{s}.tile.openstreetmap.se/hydda/full/{z

我创建了一个传单映射,我想为json文件中的每个元素创建一个标记。但问题是我不知道如何在我的类中定义“nosDonnee”变量。我的代码

class carte {
  constructor() {
    this.map = L.map("map").setView([45.764043, 4.835659], 12);
    this.calque = L.tileLayer(
      "https://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png",
      { maxZoom: 20 }
    ).addTo(this.map);
    this.marker = L.marker([
      parseFloat(nosDonnee[i].position.lat),
      parseFloat(nosDonnee[i].position.lng)
    ]).addTo(this.map);
  }

  addMarker() {
    for (let i = 0; i < nosDonnee.length; i++) {
      this.marker = L.marker([
        parseFloat(nosDonnee[i].position.lat),
        parseFloat(nosDonnee[i].position.lng)
      ]).addTo(this.map);
    }
  }
}

function ajaxget() {
  let url = new XMLHttpRequest();
  url.open(
    "GET",
    "https://api.jcdecaux.com/vls/v1/stations?contract=lyon&apiKey=69b9e30a10d230227d189617d1827d3586cf19be"
  );
  url.onload = function() {
    let nosDonnee = JSON.parse(url.responseText);
  };
  url.send();
}

ajaxget();

let nouvCarte = new carte();
类点菜{
构造函数(){
this.map=L.map(“map”).setView([45.764043,4.835659],12);
this.calque=L.tillelayer(
“https://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png”,
{maxZoom:20}
).addTo(此.map);
this.marker=L.marker([
parseFloat(nosDonnee[i].position.lat),
parseFloat(nosDonnee[i].position.lng)
]).addTo(此.map);
}
addMarker(){
for(设i=0;i
只需将
nosDonnee
作为类的属性,就可以在类中的任何地方使用和修改它

**显然不是语法的一部分,但只是强调我对代码所做的更改

class carte {
  constructor(**donnee**) {
    this.map = L.map("map").setView([45.764043, 4.835659], 12);
    **this.nosDonnee = donnee;**
    this.calque = L.tileLayer(
      "https://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png",
      { maxZoom: 20 }
    ).addTo(this.map);
    this.marker = L.marker([
      parseFloat(nosDonnee[i].position.lat),
      parseFloat(nosDonnee[i].position.lng)
    ]).addTo(this.map);
  }

  addMarker() {
    for (let i = 0; i < nosDonnee.length; i++) {
      this.marker = L.marker([
        parseFloat(nosDonnee[i].position.lat),
        parseFloat(nosDonnee[i].position.lng)
      ]).addTo(this.map);
    }
  }
}

function ajaxget() {
  let url = new XMLHttpRequest();
  url.open(
    "GET",
    "https://api.jcdecaux.com/vls/v1/stations?contract=lyon&apiKey=69b9e30a10d230227d189617d1827d3586cf19be"
  );
  url.onload = function() {
     **let nouvCarte = new carte(JSON.parse(url.responseText));**
  };
  url.send();
}

ajaxget();
类点菜{
建造商(**donnee**){
this.map=L.map(“map”).setView([45.764043,4.835659],12);
**this.nosDonnee=donnee**
this.calque=L.tillelayer(
“https://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png”,
{maxZoom:20}
).addTo(此.map);
this.marker=L.marker([
parseFloat(nosDonnee[i].position.lat),
parseFloat(nosDonnee[i].position.lng)
]).addTo(此.map);
}
addMarker(){
for(设i=0;i
  • 将变量添加到构造函数中,并将其作为属性添加到类中
  • 使用
    this.
    从类中访问该值
  • 在onload回调中实例化
    carte
    ,以确保GET async调用的响应已经到达。(否则,实例化将在获得响应之前发生
  • 类点菜{
    //通过参数将此nosDonnee值传递给构造函数
    建造商(nosDonnee){
    this.nosdonee=nosdonee;
    //这是测试输出
    //显示如何访问该变量
    console.log(this.nosDonnee[0]);
    //为了简单起见,我删除了这个例子
    //代码的其余部分
    }
    }
    函数ajaxget(){
    让url=newXMLHttpRequest();
    url.open(
    “得到”,
    "https://api.jcdecaux.com/vls/v1/stations?contract=lyon&apiKey=69b9e30a10d230227d189617d1827d3586cf19be"
    );
    url.onload=函数(){
    让nosDonnee=JSON.parse(url.responseText);
    //而不是在外部调用此方法
    //异步调用完成后调用它
    //所以你要确保有回应
    let nouvCarte=新订单(nosDonnee);
    };
    url.send();
    }
    ajaxget();