0

私は基本的なテンプレートを持っています:

<p><a href="{{queryString}}{{valueModified}}">{{value}}</a></p>

そして、クエリ文字列に追加する前に {{value}} を実行したい関数があります:

valueModified = encodeURIComponent(value);

しかし、先行入力オブジェクトの初期化の一部としてそれを行う方法がわかりません:

$(document).ready(function() {
    $('.genericSearchBox').typeahead({
        prefetch: 'genericItemList.json',
        limit: 10,
        template: // ???
     });
});

プリコンパイルされたテンプレートはこれを完全に処理できますか?

もしそうなら、データセットの定義の一部として .typeahead() に渡すための構文は何ですか?

私が試したこと:

私の JavaScript の経験は限られており、テンプレートの経験はさらに限られています (今日、それらが何であり、どのように機能するかについて学びました)。午後はテンプレート関連のトピックについて読みましたが、これまでに見たほとんどのテンプレートは、HTML マークアップ構造とさまざまな {{value}} プレースホルダーを定義しただけです。

いくつかのリテラル文字列とencodeURIComponent関数呼び出しを連結して試してみましたが、初期化が壊れただけです:

template: '<p><a href=http://search.domain.edu/search?x=12&y=12&access=p&site=domain&output=xml_no_dtd&client=domain-v5&sort=date%253AD%253AL%253Ad1&proxystylesheet=domain-v5&oe=UTF-8&q=' + encodeURIComponent(value); + '>' + value + '</a></p>'

やってみた時はありえないと思いました。私が理解していることから、.typeahead() の構文はデータセットを探します。データセットの定義ではなく、変数への値の割り当ての一部として使用される関数のみを見てきました。

typeahead.js を直接編集し、デフォルト<p>{{value}}</p>のテンプレートを置き換えることで目的を達成できますが、それは長期的な解決策とは思えません。誰かがプラグインを直接変更する必要のない、より適切な提案をしてくれることを願っています。

ありがとうございました。

4

1 に答える 1