Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从typeahead下拉列表调用控制器功能_Javascript_Angularjs_Twitter Bootstrap - Fatal编程技术网

Javascript 从typeahead下拉列表调用控制器功能

Javascript 从typeahead下拉列表调用控制器功能,javascript,angularjs,twitter-bootstrap,Javascript,Angularjs,Twitter Bootstrap,我想知道如何在从bootstrap typeahead生成的下拉列表中选择选项时调用控制器函数。下拉列表中的每个项目都有一个唯一的id。在选择该选项时,我需要将其传递给其他函数 HTML: 如何执行此操作?当您请求attrs.myEnter时,它只是一个包含表达式的字符串。作用域。$eval获取该字符串并根据作用域对其求值。但我认为$eval并不是用来获取包含函数的字符串并实际执行该函数的。更重要的是能够用更短的语法报告作用域中存在的值。如果您想走这条路线,请查看$parse服务 但是,您可能需

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

HTML:


如何执行此操作?

当您请求attrs.myEnter时,它只是一个包含表达式的字符串。作用域。$eval获取该字符串并根据作用域对其求值。但我认为$eval并不是用来获取包含函数的字符串并实际执行该函数的。更重要的是能够用更短的语法报告作用域中存在的值。如果您想走这条路线,请查看$parse服务


但是,您可能需要向指令定义对象添加一个scope属性,您可以将myEnter设置为&,然后在scope.myEnter中为您提供一个函数。运行该函数时,就像运行“我的输入”属性中的代码一样。

使用angular ui引导程序typeahead并遵循文档和示例
<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>
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