Javascript Coffeescript中未定义数据(';自动完成';)
我有一段话:Javascript Coffeescript中未定义数据(';自动完成';),javascript,jquery,coffeescript,undefined,Javascript,Jquery,Coffeescript,Undefined,我有一段话: $("#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_sour
$("#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
未定义,无法设置属性。正如本帖所述:
但是,如何在Coffeescript中检查投票结果?您可以使用:
存在运算符?.
的访问器变量可用于吸收属性链中的空引用。如果基值可能为null或未定义,请使用它,而不是点存取器
因此,如果您正在运行jQuery,并且不确定DOM中是否有#select_sourcer
,那么您可以将?
插入正确的位置:
$("#select_sourcer").autocomplete(
...
).data("autocomplete")?._renderItem = (ul, item) ->
#-------------------^
...
这将或多或少产生与以下相同的效果:
x = $('#select_sourcer').autocomplete(...).data('autocomplete')
if(x)
x._renderItem = (ul, item) -> ...
以上只是为了说明,?。
实际上检查!=空
而不是一般的错误
只有当DOM中没有
#select_sourcer
时,才有必要这样做,因此如果不需要自动完成程序,您可能希望避免尝试将其绑定到一起;OTOH,有时不在乎它是否存在并绑定起来更容易。为什么不直接设置_renderitem属性,而不是per.data()?因为它是自动完成链的一部分?我不明白你会怎么做…我的意思是,在你初始化自动完成的选项对象中?在检查了一些来源之后,我想它会起作用的谢谢,谢谢,谢谢。这澄清了很多。
x = $('#select_sourcer').autocomplete(...).data('autocomplete')
if(x)
x._renderItem = (ul, item) -> ...