在角度ng-options上选择布尔值

时间:2018-01-12 17:44:34

标签: javascript angularjs

分配给模型的布尔值不会预先选择相应的选项 - 首先显示一个空选项:

选择

<select data-ng-model="scriptData.privacy" data-ng-options="privacyOption.value as privacyOption.label for privacyOption in privacyOptionsSelect track by privacyOption.value"></select>

控制器中的选项:

$scope.privacyOptionsSelect=[
            {
                label:'Registered users only can view this',
                value: false
            },
            {
                label:'Anyone with the link can view this',
                value: true
            }
        ];

scriptData.privacy设置为false

2 个答案:

答案 0 :(得分:1)

使用格式为的ngOptions表达式时应该小心:

选择作为标签

track by一起。这是因为track by已应用于分配给ngModel的值,因此,如果您选择的格式为privacyOption.value,则track by表达式实际应用于该值。这就是它没有成功选择初始值的原因。

要解决此问题,您有两种选择。您可以跳过track by。这可行:

<select data-ng-model="scriptData.privacy" 
        data-ng-options="privacyOption.value as privacyOption.label for privacyOption 
            in privacyOptionsSelect"></select>

或者您可以更改select as - 表达式以选择整个privacyOption - 对象。这也可以(注意ngModel-directive也改变了):

<select data-ng-model="scriptData"
        data-ng-options="privacyOption as privacyOption.label for privacyOption 
            in privacyOptionsSelect track by privacyOption.value"></select>

对于完整(可能更好)的解释,I recommend the ngOptions documentation

答案 1 :(得分:0)

尝试使用ng-repeat代替ng-options,将ng-repeat应用于select中的选项元素。