【问题标题】:Simple search with Emberjs not working使用 Emberjs 进行简单搜索不起作用
【发布时间】:2015-11-15 09:21:35
【问题描述】:

我正在尝试实现一个简单的搜索功能,它将过滤结果并更新列表。

我尝试了几乎所有的教程,每个教程似乎都在使用它的 jsfiddle,但是当我在我的项目中应用相同的东西时,它根本不起作用。

这是我遇到的第一个问题,我的搜索字段似乎没有与控制器中的计算属性绑定。

我也尝试将它作为一个组件,但同样的问题,如果我在搜索字段中输入任何内容,它不会反映任何内容。

让我在这里分享我的代码,

input type="text" value=searchText placeholder="Search..."

  searchResults: ( ->
    console.log "On every key press it should come here.."
    model = @get('model')
    searchText = @get('searchText')
    filterByPath = @get('filterByPath')
    visualPath = @get('visualPath')

    if searchText
      searchText = searchText.toLowerCase()
      model = model.filter(item) ->
      Ember.get(item, filterByPath).toLowerCase().indexOf(searchText)>= 0
      model.getEach(visualPath)

    ).property('searchText')

用组件尝试了几乎相同的东西,但到目前为止没有运气。我使用的不是车把而是 Emblemjs。

【问题讨论】:

  • 你能设置演示吗,例如在 emberjs.jsbin.com 上?
  • 我不确定如果我能在那里重现同样的问题,我尝试了相同的代码与它工作的车把。但我想要它的徽章。
  • 检查一下,emberjs.jsbin.com/yovehikaje/edit?html,js,output,如果您可能知道发生了什么。

标签: ember.js ember-data emblem.js


【解决方案1】:

如果你希望它被编译,你实际上需要在模板中使用计算属性,然后重新编译等等。它的评估有点懒惰,所以如果不先在模板中使用它或从 JavaScript 代码调用,你就无法调试它。所以基本上你需要先在你的模板中使用searchResults

在演示中有model 而不是searchResults。我猜在您的应用程序中,您有类似的设置和相同的错误。

修复:

{{#each searchResults as |item|}}
    <li>{{item}}</li>
{{/each}}

Working demo.

【讨论】:

  • 感谢您的帮助 Danial,但它在我的应用程序中仍然无法正常工作,在 jsbin 中它可以,但在 App 中的行为仍然相同。
  • 我的徽章结构是这样的,div.searchBox render 'searchBox' truck div class=viewTrucks:tActive:tInActive div.mapOptionsHeaders span.mOh_1 a.cursor style='color: white;' click="changeSorting 'trucks,name'" # searchResults 中的每辆卡车都会渲染 'trucksList' 卡车
  • 也许可以尝试使用标志设置演示
  • 尝试在输入旁边回显 searchText,这样您就可以查看输入值是否已绑定。例如,在输入旁边,put(hbs): {{searchText}}。如果每次键入时它都会更新,请重新检查您是否在模板中正确引用了 searchResults。如果您在键入或加载页面时有任何错误,请检查您的控制台。也许尝试从 javascript 代码中获取 searchResults 的值,看看你得到了什么。
  • 谢谢@daniel 我能够找出问题所在,这很奇怪,但我能说什么呢,Ember 对我来说就像另一个星球 :) 问题还没有解决,但现在它会解决的。
最近更新 更多