加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

以编程方式选择AngularJS Typeahead选项

发布时间:2020-12-17 18:03:56 所属栏目:安全 来源:网络整理
导读:我有一个AngularJS Typeahead,它可以异步检索匹配项.当条形码扫描到字段中时,它会返回匹配结果,但用户仍然必须选择它.如果它完全匹配,我想自动选择结果.我看到typeahead有一个select(idx)函数,但我不确定如何从我的控制器获取它的引用. 我想象的是这样的: $
我有一个AngularJS Typeahead,它可以异步检索匹配项.当条形码扫描到字段中时,它会返回匹配结果,但用户仍然必须选择它.如果它完全匹配,我想自动选择结果.我看到typeahead有一个select(idx)函数,但我不确定如何从我的控制器获取它的引用.

我想象的是这样的:

$scope.SearchItems = function (term) {
    return $http.get('api/Items/Search',{
        params: {
            term: term
        }
    }).then(function (response) {
        if (response.data.length == 1 && response.data[0].Code == term) {
            // Somehow inform typeahead control to select response.data[0]
        }
        return response.data;
    });
};

解决方法

我有一个类似的问题,从来没有想过如何访问typeahead的选择(idx),但我设法让这个功能工作.这是我的hacky解决方法….

$promise.then(function(res) {
 angular.forEach(res,function(item,key) {

     // if we have an exact match
     if (item.title === term) {
         // update model
         $scope.src = item;

         // find item in dropdown
         var elm = '[id*=option-' + key + ']';
         var opt = angular.element(document.querySelectorAll(elm));

         //call click handler outside of digest loop
         $timeout(function() {
             opt.triggerHandler('click');
         },0);
     }
 });
 // return async results
 return res;
});

基本上我们只是手动更新我们的模型,在我们的下拉列表中找到元素,然后触发’click’处理程序.确保将$timeout()中的triggerHandler调用设置为零,否则您将获得$rootScope:inprog错误,因为摘要已在进行中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读