【问题标题】:selected boolean value on angular ng-options角度 ng-options 上的选定布尔值
【发布时间】:2018-01-12 17:44:34
【问题描述】:

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

选择:

<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

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    在使用ngOptions 表达式时应小心,格式为:

    选择 as 标签 forin 数组

    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 指令也发生了变化):

    <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

    【讨论】:

      【解决方案2】:

      通过将 ng-repeat 应用于 select 中的选项元素来尝试 ng-repeat 而不是 ng-options。

      【讨论】:

        猜你喜欢
        • 2013-12-26
        • 1970-01-01
        • 2016-07-27
        • 2015-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-31
        • 1970-01-01
        相关资源
        最近更新 更多