3

我有一个选择菜单如下:

<select ng-model="selected_event_type.event_type"
        ng-options="event_type.name for event_type in events.event_type_views">
    <option value="">Event type</option>
</select>

我还有以下单独的选择菜单:

<select ng-model="current_event"
        ng-options="event.event_id for event in current_level.events.event"
        ng-change="currentEventChanged()">
</select>

第一个选择菜单按预期工作。在第二个选择菜单的 currentEventChanged() 方法中,我更改了 selected_event_type.event_type 的值,但第一个选择菜单没有更新以反映这一点,我不知道为什么。

以下是我的控制器的相关代码:

$scope.selected_event_type = {
    event_type: null
};

$scope.events = {
    event_type_views: [
        {name: 'Collision', partial: 'views/events/collision.html'},
        {name: 'Boundary', partial: 'views/events/boundary.html'},
        {name: 'Timer', partial: 'views/events/timer.html'},
        {name: 'Input', partial: 'views/events/input.html'}
    ]
}

$scope.currentEventChanged = function () {
    var current_event_type;
    var current_event_partial;

    for (var key in $scope.current_event.event_type) {
        current_event_type = key.charAt(0).toUpperCase() + key.slice(1);
    }

    current_event_partial = 'views/events/' + current_event_type + '.html';

    $scope.selected_event_type = {
        event_type: {
            name: current_event_type,
            partial: current_event_partial
        }
    };
};
4

1 回答 1

1

我想我知道问题所在。您正在将您的第一个列表绑定到 list events.event_type_views。和模型到selected_event_type.event_type。When a elment is selected model get update to selected object(such as {name: 'Collision', partial: 'views/events/collision.html'}).

currentEventChanged方法无法创建新对象并设置值,因为比较是基于对下拉列表中选择的内容的引用完成的。方法中的逻辑不应创建新对象,而应从现有列表中选择对象,例如

$scope.selected_event_type.event_type= $scope.events.event_type_views[0]; //Logic to search the array events.event_type_views and find an element and assign
于 2013-09-21T14:11:42.320 回答