Angularjs 使用带有ngModel选项的对象选择

Angularjs 使用带有ngModel选项的对象选择,angularjs,angular-ngmodel,Angularjs,Angular Ngmodel,我正在Angular中构建一个日期时间选择器,很难弄清楚如何使用ng模型中的对象。我有一个小时的散列,名称值为1-12,每个小时都有一个AM和PM值。让ng选项生成具有正确名称/值的选项选择,我没有遇到任何问题,但是我很难弄清楚如何让ng模型根据我在newPost模型中设置的初始值从列表中选择正确的选项 我的视图中有以下标记: <div> <select name="hour" ng-options="hour.value as hour.name for hour i

我正在Angular中构建一个日期时间选择器,很难弄清楚如何使用ng模型中的对象。我有一个小时的散列,名称值为1-12,每个小时都有一个AM和PM值。让ng选项生成具有正确名称/值的选项选择,我没有遇到任何问题,但是我很难弄清楚如何让ng模型根据我在newPost模型中设置的初始值从列表中选择正确的选项

我的视图中有以下标记:

<div>
    <select name="hour" ng-options="hour.value as hour.name for hour in hours" ng-model="newPost.hour"></select>
</div>
我想知道的是如何使用ng模型实现这一点

您可以在ng选项中使用轨迹。除此之外,angular不知道如何比较ng模型和选项之间的相等性。但是,如果按字段名称提供轨迹,它将使用此字段检查是否相等


以下是plunker中的一个工作示例:

我接受了你的答案,因为它在理论上适用于我的案例。但实际上,我无法让它按我所希望的那样工作。昨晚我做了一个有用的黑客。我的方法唯一的缺点是,如果用户更改了meridiem,时间就会改变。我将表达式更改为ng options=hour.value[newPost.meridiem],将hour的hour.name改为ng model=newPost.hour.value[newPost.meridiem]。这样做的主要优点是newPost.hour现在是一个整数,而不是一个对象,这使得表单提交的预处理变得更容易。您能否提供一个关于您面临的问题的提示,以便我可以尝试一下?
var currentHourName = ((new Date()).getHours() + 24) % 12 || 12;
var currentHour = {
    name: currentHourName,
    value: {
        'AM': (((new Date()).getHours() + 24) % 12),
        'PM': (((new Date()).getHours() + 24) % 12) + 12
    }
};

// Ancillary attributes omitted for brevity.
$scope.newPost = {
    hour: currentHour
};


$scope.hours = [
    {name: 1, value: {'AM': 0,'PM': 12}},
    {name: 2, value: {'AM': 1,'PM': 13}},
    {name: 3, value: {'AM': 2,'PM': 14}},
    {name: 4, value: {'AM': 3,'PM': 15}},
    {name: 5, value: {'AM': 4,'PM': 16}},
    {name: 6, value: {'AM': 5,'PM': 17}},
    {name: 7, value: {'AM': 6,'PM': 18}},
    {name: 8, value: {'AM': 7,'PM': 19}},
    {name: 9, value: {'AM': 8,'PM': 20}},
    {name: 10, value: {'AM': 9,'PM': 21}},
    {name: 11, value: {'AM': 10,'PM': 22}},
    {name: 12, value: {'AM': 11,'PM': 23}}
];