Ember.js 在计算属性中使用this.store.query()

Ember.js 在计算属性中使用this.store.query(),ember.js,ember-data,Ember.js,Ember Data,我构建了一个自定义下拉元素,并尝试使用它来显示以下内容: {{drop-down items=types selectionChanged="typeChanged"}} {{drop-down items=meters selectionChanged="meterChanged"}} 在我的控制器中,我设置的值如下: types: [ { value: "latest", name: "Latest Widget" }, { value: "max", name: "Maximu

我构建了一个自定义下拉元素,并尝试使用它来显示以下内容:

{{drop-down items=types selectionChanged="typeChanged"}}

{{drop-down items=meters selectionChanged="meterChanged"}}
在我的控制器中,我设置的值如下:

types: [
  { value: "latest", name: "Latest Widget" },
  { value: "max", name: "Maximum Widget" },
  { value: "average", name: "Average Widget" },
],

meters: Ember.computed(function() {
  var meters = this.store.query('meter', { account_id: 2 });
  return meters;
}),
两者的值显示正确:

<select id="ember826" class="ember-view form-control">
  <option value="">Please select a widget type...</option>
  <option value="latest">Latest Widget</option>
  ...
</select>

<select id="ember849" class="ember-view form-control">
  <option value="2">Meter 1</option>
</select>
现在,这对于“类型”来说效果很好,但是对于“米”,选择的是“未定义”

然后我添加了
console.log(JSON.stringify(items))就在该行之前,对于仪表更改,它给了我以下错误:

未捕获类型错误:将循环结构转换为JSON

如果我将
{{log types}}
{{{log meters}}
添加到模板中,我会得到以下信息,这可能会对模板有所帮助:

类型:

仪表:

我注意到后者将其包装在两层“内容”键中,因此可能承诺没有得到正确解决

编辑


如果我在路由中使用this.store.query,然后在模型中使用{{log},那么它将封装在一个“content”键中,Ember可以正确地解释这个键。在控制器中执行此操作是否有理由创建额外的项目?

使用
objectAt
访问余烬集合中的项目

change: function(event) {
  var items = this.get('items');
  var index = event.target.selectedIndex;
  var selected = items ? items.objectAt(index - 1) : null;
  console.log(selected); // error occurs here
  this.sendAction('selectionChanged', selected);
}
change: function(event) {
  var items = this.get('items');
  var index = event.target.selectedIndex;
  var selected = items ? items.objectAt(index - 1) : null;
  console.log(selected); // error occurs here
  this.sendAction('selectionChanged', selected);
}