更新值时,数组更改为字符串

时间:2017-08-29 20:03:59

标签: javascript angularjs ng-options

我的HTML页面上有一个列表。此列表使用ng-options从数组中提取。对象数组的一个属性是show。 ng-options使用过滤器仅显示show == 1的选项。当用户点击按钮时,列表中的选择项将添加到数组中,并且show值需要设置为0,因此它将从名单。该值设置为0,但ng-options现在正在打印选择错误的选项。

数组定义

referenceTypes: Array<any> = [
            { label: 'Customer Reference', show: 1 },
            { label: 'PO Number', show: 1 },
            { label: 'SO Number', show: 1 }
        ]

按钮点击

addReferenceType = () => {
            ... 

            // hide the reference type from the add drop down list
            this.referenceTypes.filter(option => option.label == this.referenceType)[0].show = 0;
        }

HTML

<select ng-model='$ctrl.referenceType'
        ng-options="option.label as option.label for option in $ctrl.referenceTypes | filter: {show: 1}">
    <option value=""></option>
</select>

之前

Before



After

1 个答案:

答案 0 :(得分:0)

您需要以这种方式更改代码,否则一次过滤器返回一个空数组并且您有错误,因为单击会被触发两次。

addReferenceType() { 
    let filteredTypes: Array<any> = 
    this.referenceTypes.filter(option => option.label == this.referenceType); 
    if (filteredTypes.length > 0) { 
        filteredTypes[0].show = 0; 
    } 
 }