0

我正在尝试制作一个通用功能来启用预先输入的标签查找。在我尝试概括该功能之前,我在这方面取得了一些成功。现在它似乎工作但更新了错误的字段。

我认为创建的线路var tmApi并没有保持本地化。或者至少回调正在访问错误的变量。以及如何让回调引用本地的?

<div class="tag-container" id="skills-container"></div>
<input class="form-control" id="skills-add" type="text" 
data-tag="skills" data-prefill="${traveler.skills}" data-tagfile="/inc/ajax/skills.json">
<input type="hidden" id="skills" name="skills">

<script>setupTags();</script>

function setupTags(){

    var fields = $('INPUT[type="text"]');
    for (var i=0; i<fields.length; i++){
            
        if (fields[i].getAttribute("data-tag")){
            var tag     = fields[i].getAttribute("data-tag");
            var prefill = fields[i].getAttribute("data-prefill");
            var tagfile = fields[i].getAttribute("data-tagfile");
            
            console.log(tag);
            
            var tmApi = $('#'+tag+'-add').tagsManager({
                backspace: [],
                tagsContainer: '#'+tag+'-container',
                delimiters: [9, 13, 44], // tab, enter, comma
                prefilled: prefill,
                output: '#'+tag
            });
            
            console.log(tmApi);
            
            var tagsdb = new Bloodhound({
                  datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.name); },
                  queryTokenizer: Bloodhound.tokenizers.whitespace,
                  prefetch: {
                    url: tagfile,
                    cacheKey: tag,
                    ttl: 600000, //10 min
                    filter: function(list) {
                        return $.map(list, function(tag) { return { name: tag }; });
                    }
                  }
            });
            tagsdb.initialize();
            
            $('#'+tag+'-add').typeahead(null, {
                name: tag,
                displayKey: 'name',
                source: tagsdb.ttAdapter()
            }).on('typeahead:selected', function (e, d, s) {
                tmApi.tagsManager("pushTag", d.name);
            });
            
        }
    }
}
4

1 回答 1

0

通过包裹在一个闭包中解决它

于 2014-02-12T15:46:01.340 回答