【问题标题】:Using an ember-data model in typeahead在 typeahead 中使用 ember-data 模型
【发布时间】:2023-03-07 18:51:02
【问题描述】:

我想在我的 Ember 应用程序中使用 Typeahead.js,但不知道如何让它利用我已经设置的 ember-data RESTAdapter 模型通过我们的内部 API 查询我的数据库。

我是否可以在“本地”项目中输入一个查询来执行此操作,可能如下所示(咖啡脚本)?

$('.typeahead.userGrp').typeahead(
    [
        name: "Users and Groups"
        valueKey: 'namevalue'
        minLength: 1
        limit: 30
        template: hTemplate
        local: ->
            @get('store').find('userGrp')
        engine: Handlebars
    ]
)

或者我是否必须坚持使用老式的 JQuery AJAX 调用,如 here 所述?上面的代码有些地方不适合我,但我想尽可能多地使用 ember/ember-data 的内置内容。

另外,作为对这个问题的一个侧面思考,如果我能让我的 ember-data 适配器工作,我会在 RESTAdapter 的“buildURL”函数中处理动态 URL 部分,但如果不是,我会做它在'typeahead.remote.replace'函数中。这有意义吗?

对此有什么想法吗?

布莱恩

【问题讨论】:

    标签: jquery ember.js ember-data typeahead.js


    【解决方案1】:

    我可能会使用模型挂钩,或者在控制器中抓取必要的模型,然后在视图上的 didInsertElement 期间将它们挂钩(或者在 ember 呈现 Ember transition & rendering complete event 之后使用调度程序)。

    这是一个糟糕的 css 示例,但总体思路是在做出选择后将其钩回 ember。

    http://emberjs.jsbin.com/EYoWaWiB/4/edit

    【讨论】:

    • 谢谢!这让我进展顺利。仅供参考,我遇到了另一个问题,可能只有 Typeahead.js 必须解决(请参阅here)。在我看来,当我的 typeahead 调用中有这一行时:local: @get('controller').allPresetReports(),typeahead 不会等待承诺被解决,而是返回一个“数据未定义”错误。该控制器功能从我感兴趣的模型中找到数据(现在是 FIXTURES,但很快会是 REST),并为预先输入正确格式化。我们会看看打字前的人是否不得不说。
    • 我发现this new git project 有很大的潜力解决这个问题。
    • 不幸的是,自那个 git 项目以来,typeahead 已经经历了几乎完全的重写。它确实有效,而且很方便,但它没有更高版本的 typeahead 所具备的一些更高版本的功能。只需升级 typeahead 版本就会破坏它。
    • 我的 ISP 以某种方式阻止了 jsbin。任何人都可以使用 jsfiddle 创建另一个版本吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2017-05-21
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多