0

我试图让 Twitter Bootstrap 的 Typeahead 功能在 AngularJS ng-view 中工作,但 Javascript 调用没有注册服务。

我知道 Bootstrap 的 AngularJS 实现,但我现在必须使用“原始”Bootstrap。

  • AngularUI Bootstrap:不会触发“更新程序”事件,并$watch会导致奇怪的副作用。
    • ng-change在预先输入的选择上键入 & 时触发。我只想要一个预先输入的选择。
    • $watch没有在预先输入的选择上触发,并且尝试找到正确的插入位置$digest失败。
  • AngularStrap:触发单个typeahead-updated事件,但在多个 typeaheads(我有)的情况下不区分它来自哪里。

如果我设置了“仅 HTML”预输入,它可以工作:

<input type="text" id="textbox_EMPID" class="span6" placeholder="8675309" data-provide="typeahead" data-items="4" data-source='["Alabama","Alaska","Arizona"'>

但是,如果我将其设置为通过 Javascript 进行初始化,则 Typeahead 将不再出现。

HTML:

<input type="text" id="textbox_EMPID" class="span6" placeholder="8675309" data-provide="typeahead">

Javascript:

$('#textbox_EMPID').typeahead({
  minLength: 3,
  source: function (query, process) 
  {
    console.log("checking");
    // snipped $.get() call
  },
});

如果我在字段上调用其他 jQuery 操作,它确实有效。例如,以下将在放置在同<script>一块中时隐藏该字段:

$('textbox_EMPID').hide();

调用下面确实成功了,说明该typeahead函数可用:

if(jQuery().typeahead) { alert("yes"); }

typeahead但是永远不会调用“源”部分。我省略了$.get()请求的内容,因为它console.log()也从未出现。

我将这段代码从我编写的非 AngularJS 页面移过来,它工作得很好。我不清楚我缺少什么会导致它在ng-view.

4

0 回答 0