【问题标题】:In angularJs , how to modify auto-complete to show recently used items on top?在 angularJs 中,如何修改自动完成以在顶部显示最近使用的项目?
【发布时间】:2018-03-22 07:15:35
【问题描述】:

我在很多项目中都使用过https://material.angularjs.org/latest/demo/autocomplete。 许多用户更喜欢在列表顶部看到“最常用的项目”或“最近使用的项目”。 每个项目都有某种“等级”或“使用计数”,但应该是每个用户的。

当列表打开并且用户开始键入几个字符时,这种行为是预期的。 请问有什么建议吗?

更新 用例:城市的下拉列表。用户键入“B”,选项列表可能是:

  • 加利福尼亚贝克斯菲尔德。
  • 马里兰州巴尔的摩。
  • 路易斯安那州巴吞鲁日。
  • 阿拉巴马州伯明翰。
  • 波士顿马萨诸塞州。
  • 纽约布法罗。

用户选择“波士顿”...所以下次打开列表并输入“B”时,波士顿应该是第一个条目,如下所示:

  • 波士顿马萨诸塞州。
  • 加利福尼亚贝克斯菲尔德。
  • 马里兰州巴尔的摩。
  • 路易斯安那州巴吞鲁日。
  • 阿拉巴马州伯明翰。
  • 纽约布法罗。

(根据用户偏好)客户端或服务器端

使用客户端存储用户偏好既简单又直接,但仅限于当前使用的设备。

虽然服务器端首选项可跨设备工作,但需要更复杂的工作,尤其是在有多个下拉列表时。

【问题讨论】:

  • 你可以使用 JavaScript 来实现这样的逻辑。
  • 你知道我认为答案〜问题。因此,将最常用的项目存储在 db 中。
  • 我猜不赞成票是因为缺乏用例细节。请提供一个用例以使问题适合更好的格式。

标签: javascript angularjs autocomplete


【解决方案1】:

如果我理解您的问题,我们会将类似的内容存储在 localStorage 中。我们根据客户对我们产品下拉列表中先前选择的最后一个偏好来执行此操作。如果用户清除了所有的缓存,那么它就会丢失。将其存储在数据库中会带来持久性,但会带来更多开销和更多代码。

如果它是对所有用户都相同的一小组数据,那么您可以创建一个从服务中选择的缓存或使用HTML 5 datalist

美国有近 300 个城市人口超过 10 万,我认为这对美国来说已经足够了。对于此用例,由于您要添加语言和多个国家/地区,因此您将需要所有值的数据存储,例如数据库。还有一个名为anguarlar-localStorage 的angularjs 模块,但我不知道是否 它将随您的数据集扩展,具体取决于国家/语言的数量,但如果您想将所有内容都保留在客户端,这是一种选择。

【讨论】:

  • 我认为使用 localStorage 对“每个用户”列表更好。因此,浏览器从服务器加载所有条目,然后根据用户对最常用项目的“本地偏好”对项目进行排名,然后再显示出来。每次选择一个条目时,“本地”项目排名都会增加。
  • 我认为服务器端“首选项”需要更复杂的工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 2018-02-28
  • 2017-08-20
  • 1970-01-01
  • 2010-11-11
  • 1970-01-01
相关资源
最近更新 更多