2015-11-16 80 views
0

我在我的Ember.js項目中使用來自https://github.com/iStefo/ember-select-2的ember-select-2組件。項目列表是相當簡單的,在該路由採用Ember公司的數據加載:在Ember Data中使用ember-select-2

setupController: function(controller, model) { 
    this._super(controller, model); 

    var otherModelsPromises = { 
     accomodationTypes: this.store.find('accomodation-type'), 

    }; 

    Ember.RSVP.hash(otherModelsPromises).then(function(results) { 

     controller.set('accomodationTypes', results.accomodationTypes.get('content')); 


    }); 

而且在我的模板,我有:

{{select-2 placeholder="Filter By" content=accomodationTypes cssClass="search-filter-dropdown"}} 

,這裏是從URL返回的JSON( http://localhost:4200/api/accomodationTypes

{"accomodationTypes":[{"id":1,"text":"Bed & Breakfast","description":"","svgid":""}, 
{"id":2,"text":"Self Catering","description":"","svgid":""}, 
{"id":3,"text":"Hotel","description":"","svgid":""}, 
{"id":4,"text":"Boutique Hotel","description":"","svgid":""}]} 

我可以看到承諾最終解決路線和數據正常返回。然而,當我嘗試並點擊選擇2控制,我得到以下錯誤控制檯:

Uncaught Error: Assertion Failed: select2 has no content! 

如果我在控制器中使用靜態數據,它的工作原理。我有一種感覺,因爲承諾在select2組件渲染時沒有解決,它會失敗嗎?內容變量似乎沒有設置使用承諾? 我可以嘗試使用查詢,但我不希望提前查找類型。我只想顯示一個簡單的下拉菜單,有多個選項和刪除選項。

我錯過了什麼,或者這是一個錯誤?

編輯:這是我使用(型號/住宿-type.js)

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    text: DS.attr('string'), 
    description: DS.attr('string'), 
    svgid:DS.attr('string'), 

}); 

回答

0

Bah..I琢磨出來的模型。我做了以下兩個這樣的錯誤: 1.事實證明,在渲染視圖後調用setupController,以便視圖在渲染時無法訪問數據。所以,通過從模型鉤子返回一個承諾來糾正。這將保持渲染視圖直到模型解決。

import Ember from 'ember'; 
import DS from 'ember-data'; 
export default Ember.Route.extend({ 
model: function(params) { 
    return Ember.RSVP.hash({ 
     listings: this.store.find('listing', params), 
     accomodationTypes: this.store.find('accomodation-type') 
    }); 



    }, 

}); 
  • 改變在模板選擇-2成分使用以下:

    {{select-2 placeholder="Filter by" searchEnabled=true allowClear=true multiple=true content=model.accomodationTypes cssClass="search-filter-dropdown"}} 
    
  • 它就像一個魅力!

    相關問題