从 typeahead 下拉菜单中调用控制器函数

尼雷什帕布

我想知道如何从 bootstrap typeahead 生成的下拉列表中选择一个选项时调用控制器函数。下拉列表中的每个项目都有一个唯一的 ID。选择选项时,我需要将其传递给其他函数。

HTML:

<div class="container-fluid" ng-app="stock" ng-controller="mainCtrl as main">
    <h2>Stock Search</h2>
      <input type="text" ng-model="val" placeholder="Search for a stock" uib-typeahead="obj as obj.name for obj in result | filter:$viewValue | limitTo:10" ng-keydown="main.getStock(val)" typeahead-no-results="noResults" class="form-control" my-enter="main.getDetails(result)">
    <div ng-show="noResults">
      <i class="glyphicon glyphicon-remove"></i> No Results Found
    </div>
</div>

JavaScript:

angular.module('stock', ['ui.bootstrap'])

.config(['$qProvider', function ($qProvider) {
    $qProvider.errorOnUnhandledRejections(false);
}])

.directive('myEnter', function () {
    return function (scope, element, attrs) {
        element.bind("keydown keypress", function (event) {
            if(event.which === 13) {
                scope.$apply(function (){
                    scope.$eval(attrs.myEnter);
                });

                event.preventDefault();
            }
        });
    };
})

.controller('mainCtrl', function($scope, $http){

    var app = this;
    app.config = {
      headers: {
        'User-ID': 379,
        'Access-Token':'eWEyOS5HbHNwQkRCVUJPX2d0UUNGUVR4Z1NKRTgzUkdCWHB2V1NCbWwtckNHWW5iS05NSjJLY0J5YU5CeU5QWFhTU3R5N1phdTctd250aW15dk5ZUFcySEt3ckpxNUdCNFhwQzYyNGVQcnlKSWlYa21Fa0xvQ0hIZ1kxZVRjaU0wJVVTRVIlMzc5',
        'User-IP':'0.0.0.0',
        'Agent':'agent'
        }
      };

   $scope.result = [];
   this.getStock = function(val){
   $http.get("https://staging.investo2o.com/assetmanager-ws/api/v1/assets/getassets?query="+val+"&assetType=STK", app.config)
                 .then(function(response){
                    $scope.result = response.data;
                    return $scope.result;
             });
      }

   this.getDetails = function(id){
      console.log(id);
   }               

})//end of ctrl

我该怎么做呢?

艾米·布兰肯希普

当您要求 attrs.myEnter 时,它只是一个包含您的表达式的字符串。scope.$eval 获取该字符串并根据范围对其进行评估。但我认为 $eval 并不是为了获取包含函数的字符串并实际执行该函数。更多的是能够用更短的语法报告存在于范围内的值。如果你想走那条路,看看 $parse 服务。

但是,您可能“应该”这样做的方式是向指令定义对象添加范围属性,您可以将 myEnter 设置为“&”,然后它会在scope.myEnter. 运行该函数时,就像运行 my-enter 属性中的代码一样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Bootstrap UI中设置Typeahead下拉菜单的样式

Angular JS-自动聚焦输入并显示typeahead下拉菜单-ui.bootstrap.typeahead

TypeError:$(...)。typeahead不是函数

TypeError:$(...)。typeahead不是RequireJS的函数

typeahead.js中的音译

通过先单击向下键然后再遍历下拉菜单来打开typeahead下拉菜单

AngularJS [typeahead]在onFocus上重新打开结果下拉菜单

Angjular JS-多个输入字段打破了ui.bootstrap.typeahead上的下拉菜单

在不打开下拉菜单的情况下获取Twitter Bloodhound Typeahead的建议

没有下拉的Twitter typeahead.js

angularjs typeahead和异步api调用的问题

Typeahead.js-建议不是函数

typeahead.js不会触发源函数

Typeahead Bootstrap:ajax调用没有显示下拉列表?

jQuery Typeahead和地址选择器?

检查Typeahead中是否存在textboxt的值

react-bootstrap-typeahead中的angledown图标

Bootstrap Popover中的Typeahead.js

Typeahead 中的更改事件不起作用

Onchange事件在下拉菜单中触发并在Codeigniter的控制器中获取值

CakePHP 3.6.11:从另一个控制器在 ctp 中创建下拉菜单

CakePHP动态下拉菜单更改控制器中的页面错误

创建动态下拉菜单,在控制器中引发“加载错误”

TypeError:b.toLowerCase不是bootstrap typeahead插件中的函数

Angular-UI typeahead指令不会下拉

typeahead 不能在另一个函数中调用

结合使用typeahead.js和jquery ajax调用

ng-bootstrap typeahead TypeError:Object(...)不是函数

在自定义类下拉菜单中找不到自定义控制器类 Xcode 8.3.2