Html 在angular中动态获取下拉菜单的选项

Html 在angular中动态获取下拉菜单的选项,html,angularjs,drop-down-menu,Html,Angularjs,Drop Down Menu,主要问题是我有一个下拉菜单,它的选项应该动态更新。 工作流程如下: 我有一个input元素连接到一个名为toSubmit的ng模型,当长度超过3个字符时,应该触发一个http。get调用获取应该填充下拉菜单的列表。 因此,每当变量更改为submit时,此列表都会更改。让我们将此列表称为数据库(在控制器中,它是$scope.database) 我现在尝试的是一个非常简单的解决方案,它不起作用,很可能是因为包含下拉列表的HTMLDOM在一开始就加载了,并且没有跟踪选项中的更改 在我的控制器中,我有以

主要问题是我有一个下拉菜单,它的选项应该动态更新。 工作流程如下: 我有一个
input
元素连接到一个名为
toSubmit
ng模型,当长度超过3个字符时,应该触发一个
http。get
调用获取应该填充下拉菜单的列表。 因此,每当
变量更改为submit
时,此列表都会更改。让我们将此列表称为
数据库
(在控制器中,它是
$scope.database

我现在尝试的是一个非常简单的解决方案,它不起作用,很可能是因为包含下拉列表的HTMLDOM在一开始就加载了,并且没有跟踪选项中的更改

在我的控制器中,我有以下部分监视
提交

$scope.toSubmit = '';

$scope.$watch('toSubmit',function(query){


          if (query.length >= 3){

            getQueryDatabases.companyNameService({'field':'name','query':query,'numberOfHits':'10'},'CIK').prom.then(
            function(dataObject){

                  $scope.database = dataObject;

                  // dataObject.forEach(function(item){
                  //   $scope.databaseString.push(item.cik + ' ' + item.companyName);
                  });

                });

          }
        });
我的html如下所示:

<label for="nameCompany">Name:</label>
<input type="text" ng-model="toSubmit"></input>
<select ng-model="database" ng-options="line in database"></select>
名称:
现在我的想法是用
ng Model
绑定
数据库
,我会得到结果,但我很可能是错的。有人能帮我吗?

我建议你使用它来处理服务器请求前限制输入等问题,并且具有很好的外观和可扩展性

您需要添加到您的项目中。 以下是您的代码: Html:

如果返回的结果为零,我的示例还包含添加“创建公司”的逻辑。在本例中,position.company将在id字段中包含未找到的公司名称的文本,您可以在服务器端进行检查,并在分配id之前创建一个。 这种逻辑

if(!_.contains

条件。

这令人困惑,因为您在下拉列表中的选择将覆盖列表。可能不应该让ng模型和ng选项指向同一个对象。
    $scope.employerSelect2Options = {
    minimumInputLength: 2,
    query: function (query) {
        var _query = query;
        var companies = Restangular.all('companies').getList({query: query.term});

        companies.then(function(data) {
            var results = {results: []};
            _.each(data, function(element, index, list) {
                results.results.push({id: element.id, text: element.name});
            })
            if(!_.contains(_.map(data, function(element){ return element.name; }), _query.term)) {
                results.results.push({id: _query.term , text: 'Create company "' + _query.term + '"'});
            }
            _query.callback(results);
        })
    }
};
if(!_.contains