2017-08-26 2 views
0

私は外部APIを照会しようとしているEmber v2.14アプリを持っています。 APIはこのように、キーのドットを(「」)は、クエリのparamsを取りますEmberクエリーパラメーターでドット文字を使用する方法

http://example.com/records?query.code=abc123&code.system=whatevs 

が、私はこのように私のコントローラでqueryParamsを設定しようとしました:

// app/controllers/records.js 

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    queryParams: ['query.code', 'code.system'], 
    query.code: null, 
    code.system: null 
}) 

エンバービルドは、私のqueryParams宣言の後の行の最初のドット文字で "Unexpected token"で失敗します。

私はドットを交換するためにパーセントエンコーディングを使って試してみた、と私は、ブラウザでこれを入力した場合、これは正常に動作します:

http://example.com/records?query%2Ecode=abc123&code%2Esystem=whatevs 

しかし、エンバーが構築私は同じパーセントエンコーディングをしようとすると、再び失敗します私のクエリのパラメータのコントローラです。

// app/controllers/records.js 

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    queryParams: ['query%2Ecode', 'code%2Esystem'], 
    query%2Ecode: null, 
    code%2Esystem: null 
}) 

私は別のことをしなければならないことを知っていますか?

答えて

0

umここに何かを混ぜてください! queryParamsはあなたのemberアプリケーションのクエリパラメータについてです。外部APIを呼び出す場合は、使用例に応じて、$.ajaxember-dataember-ajaxまたはember-fetchを使用してください。

あなたのルートのクエリパラメータです。したがって、あなたはhttp://my-ember-app.example.com/foo?bar=bazのようなURLを持つことができ、bazは、例えばコントローラで使用するフィルタ値です。

しかし、本当の問題は、ドットを持つキーを持つ単純なJavaScriptオブジェクトを生成する方法です。

答えは簡単です:

var x = {}; 
x['foo.bar'] = 'bar'; 

ですから、このような何か行うことができます:私たちはショートカットを持っているのJavaScriptの新しいバージョンでただし

const params = {}; 
params.queryParams = ['query.code', 'code.system']; 
params['query.code'] = null; 
params['query.system'] = null; 
export default Ember.Controller.extend(params) 

を:

var x = { 
    ['foo.bar']: 'baz' 
} 

このこれを行うことができるということを意味します:

const params = {}; 
params.queryParams = ['query.code', 'code.system']; 
params['query.code'] = null; 
params['query.system'] = null; 
export default Ember.Controller.extend({ 
    queryParams: ['query.code', 'code.system'], 
    ['query.code']: null, 
    ['code.system']: null 
}) 

ただしこれは外部APIを呼び出すためのものではなく、Emberクエリパラメータです。

関連する問題