2017-07-30 20 views
0

我需要使用存儲中的對象填充電源選擇,但我只能獲取選項與硬編碼陣列myOptions一起顯示。我試圖生成myOption2動態,顯然得到了相同的輸出myOptions,但它拋出一個錯誤:當使用動態生成的對象數組填充ember-power-select時,無法將對象轉換爲Array.toString(native)的基元值

ember.debug.js:19845 Uncaught TypeError: Cannot convert object to primitive value 
at Array.toString (native) 
at Object.addListener (http://localhost:4200/assets/vendor.js:30682:88) 
at Object.addObserver (http://localhost:4200/assets/vendor.js:34026:23) 
at Array.addObserver (http://localhost:4200/assets/vendor.js:47679:27) 
at Class.updateOptions (http://localhost:4200/assets/vendor.js:88968:17) 
at invoke (http://localhost:4200/assets/vendor.js:11825:16) 
at Queue.flush (http://localhost:4200/assets/vendor.js:11891:11) 
at DeferredActionQueues.flush (http://localhost:4200/assets/vendor.js:11699:17) 
at Backburner.end (http://localhost:4200/assets/vendor.js:11013:25) 
at Backburner.run (http://localhost:4200/assets/vendor.js:11135:18) 

function addListener(obj, eventName, target, method, once) { 
_emberMetalDebug.assert('You must pass at least an object and event name to Ember.addListener', !!obj && !!eventName); 
_emberMetalDebug.deprecate('didInitAttrs called in ' + (obj && obj.toString && obj.toString()) + '.', eventName !== 'didInitAttrs', { 
    id: 'ember-views.did-init-attrs', 
    until: '3.0.0', 
    url: 'http://emberjs.com/deprecations/v2.x#toc_ember-component-didinitattrs' 
}); 

//template.hbs 

{{#power-select options=myOptions onchange=(action "foo") as |opt|}} 
    {{opt.name}} 
{{/power-select}} 

//component.js 

myOptions: [ 
    { name: 'First Option' }, 
    { name: 'Second Option' } 
], 

myOptions2: [], 

didReceiveAttrs() { 
    this.get('model.content').forEach((option) => { 
    this.get('myOptions2').push(option._data); 
    }); 
} 


//#=> myOptions: [{name: 'First Option'},{"name":"Second Option"}] 
//#=> myOptions2 [{name: 'First Option'},{"name":"Second Option"}] 

提前感謝!

+0

什麼是'option._data'?這看起來像私人API! – Lux

回答

0

而不是push你需要使用pushObject,只有觀察者,計算屬性將觸發,模板將自動更新。

this.get('myOptions2').pushObject(option._data) 

被說,我不知道這會解決您的問題。