【问题标题】:Angular ng-options for bounded select elements有界选择元素的角度 ng-options
【发布时间】:2015-07-31 15:55:48
【问题描述】:

我快到了,但停留在一个小细节上。我似乎无法让所选汽车制造商的“汽车型号”的“名称”属性实际显示在选择菜单上。目前,它似乎显示了正确的选项数量,但选项显然是空白的。这是我的代码以帮助更好地解释...

$scope.carMakes = [
    {
        name: 'Honda',
        models: [{name:'Accord'}, {name: 'Civic'}, {name: 'CRX'}]
    },
    {
        name: 'Toyota',
        models: [{name:'Camry'}, {name: 'Forerunner'}]
    }
];

   <div class="input-group">
        <label>Vehicle Make</label>
        <select id="carMake" ng-model="carMake" ng-options="carMake as carMake.name for carMake in carMakes track by carMake.name">
            <option value="">All</option>
        </select>
    </div>
    <div class="input-group carModels">
        <label>Vehicle Model</label>
        <select id="carModel" ng-model="carMake.model" ng-options="carMake.model as carMake.model.name for carMake in carMake.models">
            <option value="">All</option>
        </select>
   </div>

有人可以告诉我为什么即使显示了 carModel 选择选项,“名称”也没有显示?谢谢!

【问题讨论】:

    标签: angularjs select options ng-options


    【解决方案1】:

    你想要这样的东西:

    <select id="carModel" ng-model="carMake.model" ng-options="carModel as carModel.name for carModel in carMake.models">
        <option value="">All</option>
    </select>
    

    我们使用 carModel.name 作为显示并将值设置为对象本身。所以在你的控制器中,$scope.carMake.model 将等于模型对象。因此,如果用户选择“Accord”,那么在您的控制器中:

    $scope.carMake.model.name === 'Accord' // True
    

    在做出选择后将评估为真。

    【讨论】:

    • 感谢 Nicholas 的快速回复,但恐怕我没有遵循您提出的解决方案。我可能解释不正确,但看起来您是在说手动设置模型名称?这不是我想要实现的目标。我需要它,如果有人从 carMakes 列表中选择“Honda”,那么下一个选择菜单仅显示所选品牌(Honda)的“Models”。
    • 对不起 - 我想我的解决方案不清楚。您应该更改 #carModel 选择元素的 ng-options 属性,如我的回复中所示。第二个代码 sn -p 是为了演示如果用户在下拉菜单中选择“Accord”,控制器中$scope.carMake.model.name 的值。
    • 啊,这很有道理。奇迹般有效。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多