2017-03-16 1 views
0

私は ember-select-2をemberアプリケーションの先読みとして使用しています。問題はサーバーからデータを取得できますが、データがドロップダウンあなたのお手伝いをいただければ幸いです。あなたはエンバー選択-2のexamplesをチェックするとAJAXクエリでタイプアヘッドを使用しているときにember-select-2問題が発生する

{{select-2 
    placeholder="Choose from our many pizzas" 
    value=chosenTypeaheadPizza 
    typeaheadSearchingText="Searching pizzas" 
    typeaheadNoMatchesText="No pizzas found for '%@'" 
    typeaheadErrorText="Loading failed: %@" 
    query="queryPizzas" 
}} 

とアクションハンドラは

queryPizzas(query) {  
     var self = this; 
     var store = self.get('store'); 
     let adapter = store.adapterFor("pizzas"); 
     let serachQuery = query.term;  
      adapter.searchPizza(serachQuery).then(function(response) { 

       console.log(response.pizzas); 

      }); 
    }, 

応答

{ 
    "pizzas": [{ 
     "id": 1, 
     "name": "pizza 1" 
    }, { 
     "id": 2, 
     "name": "pizza 2" 
    }] 
    } 

答えて

1

です。アクションハンドラに渡されたパラメータがdeferredであることがわかります。 「query.callbackを直接呼び出さず、常に提供された遅延を使用するようにしてください!つまり、アクションハンドラの第2引数として提供されるdeferredに電話する必要があります。私は残り火選択-2が、何をすればいいの専門家ではないよ

queryPizzas(query, deferred) {  
    var self = this; 
    var store = self.get('store'); 
    let adapter = store.adapterFor("pizzas"); 
    let searchQuery = query.term;  
    adapter.searchPizza(searchQuery).then(function(data) { 
     //try to pass the array as the data 
     deferred.resolve({data: data.pizzas, more: false}); 
    }, deferred.reject); 
} 

提供ソリューション上記おそらくあなたが提供したデータ形式のために動作します。対応するtwiddleを確認してください。この例では、私はサーバーの遠隔呼び出しをシミュレートするために模擬約束を使用し、selectに表示されるコンテンツとして提供したサンプルデータを返しました。 application.hbsのように、ピザの名前を表示するには、optionLabelPathを使用する必要があります。

+0

これはコンソールに表示されます。TypeError:未定義のプロパティ 'length'を読み取れません.i応答データを追加しました。 – vivek

+0

@vivek私は自分自身でコンポーネントを使用したことはないと言ったので、それは試してみるだけです。あなたの回答データに関する回答を更新しました。試してもらえますか? – alptugd

+0

まだTypeError:未定義のプロパティ 'length'を読み取ることができません – vivek

関連する問題