Javascript 如何绑定两个select输入并为每个输入设置初始值

Javascript 如何绑定两个select输入并为每个输入设置初始值,javascript,html,angularjs,binding,controller,Javascript,Html,Angularjs,Binding,Controller,我在作用域中有此映射:$scope.grapherEventsAndFields。其中的对象如下所示:{'event_name':['field1','field2',…]}(因此键是事件名称,值是该事件的字段数组) 我希望完成以下操作:有两个选择输入,一个包含事件,另一个用于该事件的字段。当我更改事件类型时,可用字段将相应更改。此外,我希望默认情况下,事件输入选择了映射中的第一个键,字段输入选择了该事件的第一个字段上面的事件。在这些输入下面,将有一个搜索按钮,该按钮必须调用具有两个选定值的函数

我在作用域中有此映射:
$scope.grapherEventsAndFields
。其中的对象如下所示:
{'event_name':['field1','field2',…]}
(因此键是事件名称,值是该事件的字段数组)

我希望完成以下操作:有两个选择输入,一个包含事件,另一个用于该事件的字段。当我更改事件类型时,可用字段将相应更改。此外,我希望默认情况下,事件输入选择了映射中的第一个键,字段输入选择了该事件的第一个字段上面的事件。在这些输入下面,将有一个搜索按钮,该按钮必须调用具有两个选定值的函数。到目前为止,我有以下代码:

前端:

<div class="form-horizontal">
    <div class="form-group" style="margin-bottom: 5px;">
        <label class="control-label col-xs-2" style="font-weight: normal;">Event: </label>
        <div class="col-xs-10">
            <select class="form-control indexDropDown ng-pristine ng-valid pulseControl ng-touched"
                    ng-options="key for (key, value) in graphEventsAndFields"
                    ng-model="selectedEventForSearch" ng-change="uiSelectIndex()">
            </select>
        </div>
    </div>

    <div class="form-group">
        <label class="control-label col-xs-2" style="font-weight: normal;">Field: </label>
        <div class="col-xs-10">
            <select class="form-control indexDropDown ng-pristine ng-valid pulseControl ng-touched"
                    ng-options="field for field in selectedEventForSearch"
                    ng-model="selectedFieldForSearch" ng-change="uiSelectIndex()">
            </select>
        </div>
</div>

<div class="btn btn-primary" ng-click="search(selectedEventForSearch, selectedFieldForSearch)">Search</div>
但是,这仅为事件输入选择一个默认值,在调用搜索函数时,selectedEventForSearch变量实际上是数组(键)。如果我尝试使用类似于
“graphEventsAndFields中(键,值)的键按键跟踪”
并且我在控制器中设置了
$scope.selectedEventForSearch=firstKey
,它不工作,没有选择默认值


我缺少什么?我是否应该更改对象格式(例如,使用对象数组而不是具有多个键的对象)。我是否可以使用此结构实现我所描述的内容?(最好)。谢谢!

最后,我将数据集格式更改为包含对象的数组,如
{eventName:'evn',fields:[…,…,…]}
。在前端,代码更改为:

            <div class="form-horizontal">
                <div class="form-group" style="margin-bottom: 5px;">
                    <label class="control-label col-xs-2" style="font-weight: normal;">Event: </label>
                    <div class="col-xs-10">
                        <select class="form-control indexDropDown ng-pristine ng-valid pulseControl ng-touched"
                                ng-options="obj.eventName for obj in graphEventsAndFields track by obj.eventName"
                                ng-model="selectedEventForSearch" ng-change="uiSelectIndex()">
                        </select>
                    </div>
                </div>

                <div class="form-group">
                    <label class="control-label col-xs-2" style="font-weight: normal;">Field: </label>
                    <div class="col-xs-10">
                        <select class="form-control indexDropDown ng-pristine ng-valid pulseControl ng-touched"
                                ng-options="field for field in selectedEventForSearch.fields"
                                ng-model="selectedFieldForSearch" ng-change="uiSelectIndex()">
                        </select>
                    </div>
                </div>
            </div>

现在它可以工作了。

firstKey的值是多少??请删除这一行并检查
ng init=“selectedFieldForSearch=selectedEventForSearch[0]”
firstKey的值是什么意思?它是一个字符串。仅用于测试的对象是:{“钓鱼”:[“群集id”,“品牌”],“作者”:[“ec\U插入日期”,“origin_ip”]}。我删除了该行,我忘了它,我认为它可能会起作用。然后你得到了答案:)有或没有该行,它都不起作用。正如我所提到的,无论我是按键跟踪还是按值跟踪,它都不起作用。此外,selectedEventForSearch不是键,而是数组(值)。
            <div class="form-horizontal">
                <div class="form-group" style="margin-bottom: 5px;">
                    <label class="control-label col-xs-2" style="font-weight: normal;">Event: </label>
                    <div class="col-xs-10">
                        <select class="form-control indexDropDown ng-pristine ng-valid pulseControl ng-touched"
                                ng-options="obj.eventName for obj in graphEventsAndFields track by obj.eventName"
                                ng-model="selectedEventForSearch" ng-change="uiSelectIndex()">
                        </select>
                    </div>
                </div>

                <div class="form-group">
                    <label class="control-label col-xs-2" style="font-weight: normal;">Field: </label>
                    <div class="col-xs-10">
                        <select class="form-control indexDropDown ng-pristine ng-valid pulseControl ng-touched"
                                ng-options="field for field in selectedEventForSearch.fields"
                                ng-model="selectedFieldForSearch" ng-change="uiSelectIndex()">
                        </select>
                    </div>
                </div>
            </div>
$scope.selectedEventForSearch = $scope.graphEventsAndFields[0];
$scope.selectedFieldForSearch = $scope.selectedEventForSearch.fields[0];