2016-03-26 4 views
1

В Ember.js, query-params может использоваться с link-to для создания ссылок, содержащих строку запроса. Например:Параметры произвольного запроса на Ember.js

<p>{{link-to "Search" 'search' (query-params q='london')}}</p> 

Что не сразу видно, как пройти произвольные параметры query-params. Это: передача объекта, чей ключ/значения будет содержать строку запроса. Например, следующий (который выдает ошибку):

// At the component 
myParams: { 
    q: 'london', 
}, 

{{!-- At the template --}} 
<p>{{link-to "Search" 'search' (query-params myParams)}}</p> 

<!-- The end result --> 
<p><a href="https://stackoverflow.com/search?q=london">Search</a></p> 

Глядя на исходный код Ember, я могу видеть, как это может быть сделано. Я могу собрать объект, который похож на тот, который возвращается query-params. Правда, следующий объект будет интерпретироваться link-to, как я хочу:

// At the component 
myParams: { 
    isQueryParams: true, 
    values: { 
    q: 'london', 
    }, 
}, 

{{!-- At the template --}} 
<p>{{link-to "Search" 'search' myParams}}</p> 

Однако, это выглядит как внутренний, частный интерфейс для меня. Поэтому мой вопрос: есть ли одобренный способ сделать это? (А что это?)

ответ

2

Единственное решение на данный момент, чтобы создать свой собственный помощник:

// app/helpers/hash-query-params.js 
import Ember from 'ember'; 

export function hashQueryParams([hashParams]) { 
    return Ember.Object.create({ 
    isQueryParams: true, 
    values: hashParams 
    }); 
} 

export default Ember.Helper.helper(hashQueryParams); 

затем использовать его как

<p>{{link-to "Search" 'search' (hash-query-params myParams)}}</p> 

Это может быть поддержано Эмбер. Откройте RFC или создайте аддон с помощью этого помощника! :)

Смежные вопросы