【问题标题】:Why is typeahead-js not working on Meteor but is working locally?为什么 typeahead-js 不在 Meteor 上工作,而是在本地工作?
【发布时间】:2013-11-13 04:15:31
【问题描述】:

我使用 typeahead-js 的设置如下。它在本地运行良好,没有任何问题。但是,当我部署到流星时,它不再起作用,因为基准相同但没有发生预输入。

在 Meteor.client 上:

Template.searchProfiles.rendered = function() {
    $('input#query').typeahead({
        name:'searchProfiles',
        local:searchProfilesDatums(),
    });
}

var searchProfilesDatums = function() {
    var datums = [];
    Profiles.find().forEach(function(profile) {
        tokens = profile.name.split(" ");
        datums.push({value:profile.name, nameRoute:profile.nameRoute, tokens:tokens});
    });
    return datums;
}

【问题讨论】:

    标签: javascript meteor typeahead.js


    【解决方案1】:

    当您将“名称”属性提供给预输入数据 - it caches the datum,并使用另一个具有相同名称的数据重新初始化任何预输入时,将重新使用该数据 - 包括本地值。

    如果您在远程运行 - 第一个数据可能会在集合中没有数据的时候被初始化(例如等待订阅),随后的数据将被忽略以支持缓存的数据。

    可能的解决方案:

    • 删除数据名称,防止预先输入缓存
    • 每次都提供一个唯一的名称(坏主意,因为它们都被缓存了)
    • 使用 IronRouter,为所需的数据/订阅提供 before/ready 挂钩
    • 使用修改后的 typeahead 分支,允许计算回调(显然是 coming in version 0.10

    我目前正在使用modified branch,它允许计算值,但我对它有一些自己的看法。

    【讨论】:

    • 谢谢。这是一个很好的答案。解决了眼前的问题并提供了实施更好解决方案的好方法
    猜你喜欢
    • 2020-06-15
    • 2010-10-23
    • 2013-01-10
    • 2017-11-12
    • 1970-01-01
    • 2022-10-02
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多