Typeahead在AEM 6.1中不起作用,但在CQ 5.6.1

时间:2015-10-07 09:19:30

标签: javascript jquery java-8 cq5 aem

我正在将项目从CQ 5.6.1迁移到AEM 6.1。

然后,当我测试它时,发现我使用typeahead.bundle.js的代码部分不再工作了。当我回到CQ 5.6.1中测试项目时,它确实可以正常工作。

尝试隔离关注点(获取代码片段而不是将其置于AEM 6.1)并且它运行正常。

我的初步调查结果是单独使用AEM 6.1服务器可能会导致typeahead.bundle.js不起作用。

<html>
<head>

<script src="jquery-2.0.0.min.js"></script>
<script src="hogan-3.0.1.js"></script>
<script src="typeahead.bundle.js"></script>

</head>
<body>

<row>

<input id="country-search" type="text" class="typeahead form-control" placeholder="Country" title="Enter the terms you wish to search for" />

</row>

<script type="text/javascript">
    $(document).ready(function() {
        var countries = new Bloodhound({
          name: 'countrysearch-countries',
          datumTokenizer: Bloodhound.tokenizers.obj.whitespace('englishName', 'localName'),
          queryTokenizer: Bloodhound.tokenizers.whitespace,
          limit: 5,
          prefetch: {
           url: 'country.json',
          }
        });
        var countrySuggestionTemplate = Hogan.compile('<p>{{localName}} ({{englishName}})</p>');

        countries.initialize();
        $("#country-search").typeahead(null, {
            displayKey: 'localName',
            source: countries.ttAdapter(),
            templates: {
                suggestion: function(country) {
                    return countrySuggestionTemplate.render(country);
                }
            }
        }).on('typeahead:selected', function (e, datum) {
            window.location = datum.url;
        });
    });
</script>

country.json的JSON字符串内容:

[{ “URL”: “http://xxxx.com”, “的localName”: “افغانستان”, “中文名”: “阿富汗”},{ “URL”: “http://xxxx.com”, “的localName” : “Shqipëria”, “中文名”: “阿尔巴尼亚”},{ “URL”: “http://xxxx.com”, “的localName”: “الجزائر”, “中文名”: “阿尔及利亚”}]

注意:请注意,上面的HTML脚本在未部署到AEM 6.1时工作正常。

希望每个人都能帮助我重塑这一点。

由于

1 个答案:

答案 0 :(得分:1)

我已经找到了答案。

由于未声明的变量,似乎在aem6服务器中存在未初始化的内部javascript(很奇怪,因为它适用于CQ 5.6.1)。

所以我decalre明确变量,它现在工作正常。