地点'选择'匹配选项中的属性(在指令中)

时间:2014-11-05 10:19:50

标签: angularjs

如何将{selected'属性放在option device.type s值相等的位置。出于某种奇怪的原因,即使option具有其他值,也会显示第一个device.type。将代码放在指令linkcompilecontroller中的最佳位置在哪里?

template.html

<div>

    <select ng-model="device.type">
        <option value="value1">value1</option>
        <option value="value2" selected>value2</option>
        .
        .
        .
        <option value="valueN">valueN</option>
    </select>
</div>

指令

app.directive('details', function() {
    return {
        restrict : 'E',
        scope : {
            device: '=',
            ...
        },
        templateUrl : 'template.html',
        link : function(scope, element, attrs) {
            // put 'selected' on option element where device.type is equivalent to
            // is it preferrable to put logic here? or in controller or compile
        }
    };
});

感谢您的输入。感谢。

1 个答案:

答案 0 :(得分:0)

您不需要创建指令来实现这一目标。 只需填写ng-options,然后使用track by <some field>。 然后,当您的选择模型发生变化时,它会选择与您在track by <some field>中选择的字段对应的正确选项。

类似的东西:

<select 
    ng-model="device"
    ng-options="device as device.type for device in devices track by device.type">
</select>

因此,当您将设备对象放入选择的模型时,它会选择device.type与您的模型匹配的选项。