typeahead 为一个领域工作,而不是另一个领域

马可·雷布萨门

我有一个包含 2 个输入字段的表单,我希望为这两个输入字段提供自动完成功能,但来自不同的来源。虽然两者的代码基本相同,但它仅适用于一个领域(客户)。如果我使用邮递员手动查询 API,我会按预期获得数据。

这是表格

@model dynamic

@{
    ViewBag.Title = "New Rental Form";
}

<h2>New Rental Form</h2>
<form>
    <div class="form-group">
        <label>Customer</label>
        <input id="customer" type="text" value="" class="form-control" />
    </div>
    <div class="form-group">
        <label>Movie</label>
        <input id="movie" type="text" value="" class="form-control" />
    </div>
    <button class="btn btn-primary">Submit</button>
</form>
@section scripts
{
    <script>
        $(document).ready(function () {
            var vm = {};

            var customers = new Bloodhound({
                datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
                queryTokenizer: Bloodhound.tokenizers.whitespace,
                remote: {
                    url: '/api/customers?query=%QUERY',
                    wildcard: '%QUERY'
                }
            });

            $('#customer').typeahead({
                minLength: 3,
                highlight: true
            },
                {
                    name: 'customers',
                    display: 'name',
                    source: customers
                }).on("typeahead:select",
                    function (e, customer) {
                        vm.customerId = customer.id;
                });

            var movies = new Bloodhound({
                datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
                queryTokenizer: Bloodhound.tokenizers.whitespace,
                remote: {
                    url: '/api/movies?query=%QUERY',
                    wildcard: '%QUERY'
                }
            });

             $('#movie').typeahead({
                    minLength: 3,
                    highlight: true
                },
                    {
                        name: 'movie',
                        display: 'name',
                        source: movies
                    });
            })
    </script>
}

它仅适用于“客户”字段。同样在 Visual Studio 中,我可以看到查询已完成。那么问题可能出在解析 API 结果上?我不知道...

马可·雷布萨门

问题是被调用的 API 实际上并没有过滤列表。它总是返回完整的电影列表。typeahead如果结果太多,似乎不会显示选择。所以我所要做的就是实现接收值%QUERY并实际过滤列表的参数。

public IEnumerable<MovieDto> GetMovies(string query = null)
{
    var moviesQuery = _context.Movies
        .Include(m => m.Genre)
        .Where(m => m.AmmountAvailable > 0);

     if (!string.IsNullOrWhiteSpace(query))
        moviesQuery = moviesQuery.Where(m => m.Name.Contains(query));

    return moviesQuery
        .ToList()
        .Select(Mapper.Map<Movie, MovieDto>);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

与另一个领域相关的领域的总和。

领域,对象已由另一个领域管理

typeahead 不能在另一个函数中调用

计数案例陈述-当一个领域大于另一个领域时

如何用Yup验证一个领域与另一个领域?

将价值从一个领域传递到另一个领域

字典联合并总结另一个领域

无法从另一个模块或领域使用GraphQLSchema

Typeahead.js / Bloodhound只显示一个结果

TypeError:$(...)。typeahead即使包括typehead.js也不是一个函数

一个领域的数据模型的更改需要迁移另一个领域。为什么?

将对象从一个领域复制到另一个领域因主键冲突而失败

TypeError:$(...)。typeahead不是函数

一个领域中的两个领域

当我从下拉列表中选择一个选项时,jQuery typeahead停止工作

执行从一个列表到另一个更新属性值的领域迁移

Djnago QuerySet:distinct() 适用于一个领域,但不适用于另一个领域

将所有对象(保留它们的关系)从一个领域复制到另一个领域

关于选择项领域中另一个表

如何提高基于另一个领域的Elasticsearch结果?

通过Elasticsearch回归到null的另一个领域

JSR-303:另一个跨领域验证问题

领域按另一个表中的属性总和排序

从Android中的另一个线程进行改造和领域访问

错误:无法从另一个模块或领域使用GraphQLSchema“ [object GraphQLSchema]”

如何使用领域Swift检索另一个对象的列表中的对象?

领域迁移:将对象迁移到另一个

错误:无法从另一个模块或领域使用GraphQLObjectType“ __Directive”

领域:指定一个要加入的领域