胡子得到"这"从一个循环

时间:2018-05-07 08:03:39

标签: javascript mustache

数据

{
  "data": {
    "cats": [
      {
        "name": "Kidlat",
        "age": 1
      },
      {
        "name": "Lanaya",
        "age": 2
      },
      {
        "name": "Akasha",
        "age": 2
      }
    ]
  }
}

我有一个<select>循环使用胡须,如:

{{#data.cats}}
<select id="select">
  <option value="{{this}}">{{name}} - {{age}}</option>
</select>
{{/data.cats}}

循环工作正常,但我似乎无法获得项目的对象值。

$('#clinicSelectMap').on("change", function(e) {
  console.log(this.value); // has value
  console.log(this.value.name); // undefined
});

1 个答案:

答案 0 :(得分:0)

您误解了this在回调中是如何运作的。 this引用了select元素本身,并且调用console.log(this.value)刚刚打印了在下拉列表中选择的值。请注意,它与您的集合中的对象不同。

实际上,您无法使用this在HTML模板中传递整个对象。相反,您需要将name(我假设它是唯一的)分配给value属性,并在回调中使用它来获取对象。

{{#data.cats}}
<select id="select">
  <option value="{{name}}">{{name}} - {{age}}</option>
</select>
{{/data.cats}}

$('#clinicSelectMap').on("change", function(e) {
  var name = this.value;
  var cat = collection.data.cats.find(item => item.name === name);
  console.log(cat);
});