1

我使用 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;
}
4

1 回答 1

1

当您为预先输入的数据提供“名称”属性时 -它会缓存数据,并且使用另一个具有相同名称的数据重新初始化任何预先输入将重新使用该数据 - 包括本地值。

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

可能的解决方案:

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

我目前正在使用一个允许计算值的修改分支,但我有一些自己的曲折。

于 2013-11-13T06:02:57.140 回答