2015-07-05 82 views
4

我已經建立一個自定義下拉元素,我想用它來顯示一兩件事情:使用this.store.query()在計算財產

{{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> 

我的下拉組件使用下列計算出所選的值:

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

現在這對'類型'很好,但'米',選擇是「未定義」。

我然後只在該行之前並添加console.log(JSON.stringify(items));,爲米變化,它給了我下面的錯誤:

Uncaught TypeError: Converting circular structure to JSON

如果我添加{{log types}}{{log meters}}到模板中,我得到以下,這可能一些線索它:

類型:

Result of {{log types}}

(米):

Result of {{log meters}}

我注意到,後者有它包裹在一對夫婦的「內容」鍵層,所以也許承諾沒有被妥善解決?

編輯

如果我使用this.store.query的路線,然後{{數}}模型那麼它包裹在一個單一的「內容」鍵,它可以恩貝爾正確解釋。有沒有任何理由在控制器中做這件事應該創造額外的一個?

回答

1

使用objectAt訪問Ember Collection中的項目。

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); 
} 
+0

嗨Kingpin2k,謝謝:) –