2015-10-13 47 views
0

我的打印元素有一些数据属性,它们定义了要发送到我的服务的url,字段和其他参数。使用数据短划线属性初始化打印源

我试图访问源函数中的这些数据属性,但没有运气。

我的预输入元素被定义如下:

<input class="typeahead" type="text" data-url="some_url.json"> 

我的JavaScript来初始化预输入是这样的:

$("body").find('.typeahead').typeahead(null, { 
    displayKey: 'name', 
    source: getSource()   
}) 

function getSource(){ 
    var my_url = ??????? 

    return new Bloodhound({ 
     datumTokenizer: Bloodhound.tokenizers.whitespace, 
     queryTokenizer: Bloodhound.tokenizers.whitespace, 
     remote: { 
       url: my_url, 
       wildcard: '%QUERY' 
       } 
     }); 
} 

在 “的getSource” 功能指向 “窗口” 的 “这个” 变量。 还有另外一种方法可以做到这一点,或者我需要为每种类型的字符串定义一个初始化。

谢谢。

回答

1

我只是然后激活之前在预输入元素迭代:

$(".typeahead").each(function(){ 
    var url = $(this).data("url"); 
    $(this).typeahead(...); 
    }) 
+0

是的!很好。 – rabbit

0

可以初始化一个空预输入,并使用 “预输入:激活” 事件来初始化: $( “选择”)预输入() 。对( “预输入:激活”,函数(){VAR 网址= $(本)。数据(“URL”);

 //destroy old typeahead 
     $(this).unbind("typeahead:active"); 
     $(this).typeahead("destroy"); 

     //reconstruct typeahead again 
     $(this).typeahead(null, 
      { 
      displayKey: xxx, 
      source: url 
      }); 
    } 

请记住,当你“摧毁”你的控制,它回滚到原始的元素所以有些事情可能会丢失,像焦点

另一个问题是这个事件会在新的控件中再次被触发,所以你需要解除这个事件。