gpt4 book ai didi

javascript - 数据 ('autocomplete' )在 Coffeescript 中未定义

转载 作者:行者123 更新时间:2023-12-02 19:36:46 24 4
gpt4 key购买 nike

我有这个片段:

$("#select_sourcer").autocomplete(
minLength: 2
source: "/admin/users/list_of_sourcers.json"
focus: (event,ui) ->
$('#select_sourcer').val(ui.item.full_name)
false
select: (event,ui) ->
$("#select_sourcer").val(ui.item.full_name)
$("#merchant_sourcer_id").val(ui.item.id)
false
).data("autocomplete")._renderItem = (ul, item) ->
$("<li></li>").data("item.autocomplete", item).append("<a>" + item.full_name_with_status + "</a>").appendTo ul

有时我会收到此错误:

无法设置未定义的属性“_renderItem”

所以我假设,当:

$("#select_sourcer").autocomplete(...).data("autocomplete")

未定义,我们无法设置该属性。正如此线程中所述:Why am I getting this JS error?

但是,我如何在 Coffeescript 中检查投票答案?

最佳答案

您可以使用accessor variant of the existential operator :

The accessor variant of the existential operator ?. can be used to soak up null references in a chain of properties. Use it instead of the dot accessor . in cases where the base value may be null or undefined.

因此,如果您正在运行该 jQuery 并且不确定 DOM 中是否有 #select_sourcer,那么您可以将 ? 放入其中正确的地方:

$("#select_sourcer").autocomplete(
...
).data("autocomplete")?._renderItem = (ul, item) ->
#-------------------^
...

这或多或少会产生相同的效果:

x = $('#select_sourcer').autocomplete(...).data('autocomplete')
if(x)
x._renderItem = (ul, item) -> ...

以上内容仅用于说明目的,?. 实际上检查 != null 而不是一般的错误。

仅当 DOM 中没有 #select_sourcer 时才需要这样做,因此如果不需要,您可能希望避免尝试完全绑定(bind)自动完成器; OTOH,有时更容易不关心它是否存在并捆绑起来。

关于javascript - 数据 ('autocomplete' )在 Coffeescript 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10838886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com