无法读取未定义的“已禁用”属性

问题描述 投票:0回答:1

我有一个 Angular JS 应用程序。在此我有一个下拉菜单,我可以通过键入并按 Enter 键来创建新选项。但是,当我按 Enter 键时,我收到一些 JS 异常

这是例外情况

TypeError: Cannot read property 'disabled' of undefined
at angular.js:26183
at forEach (angular.js:336)
at readNgOptionsMultiple [as readValue] (angular.js:26181)
at angular.js:28062
at Scope.$get.Scope.$eval (angular.js:15830)
at Scope.$get.Scope.$apply (angular.js:15929)
at HTMLSelectElement.<anonymous> (angular.js:28061)
at HTMLSelectElement.jQuery.event.dispatch (jquery-2.1.4.js:4435)
at HTMLSelectElement.elemData.handle (jquery-2.1.4.js:4121)
at Object.jQuery.event.trigger (jquery-2.1.4.js:4350)

该文件是 Angular.js 文件,下面是它产生的位置。

 forEach(selectedValues, function(value) {
        var option = options.selectValueMap[value];
        if (!option.disabled) selections.push(options.getViewValueFromOption(option));
      });

我的 HTML/Angular 代码如下

 <div class="row">
                        <div class="col-xs-12">
                            <div class="form-group form-md-line-input form-md-floating-label">
                                <select class="js-select2-tags form-control input-lg form-control-static" id="new-note-tags" name="note-tags" style="width: 100%" multiple="multiple" data-placeholder="Type one or more tags..."
                                        ng-model="addNote.AssociatedTags" ng-options="option.Name for option in NoteTags track by option.Name"
                                        data-rule-required="true"
                                        data-msg="Note tags cannot be empty"></select>
                                <label for="new-note-tags">Note Tags<span class="required"> * </span></label>
                            </div>
                        </div>
                    </div>

有人可以指导我吗?

更新: 我已经检查过这一点,我的观察是新添加的选项实际上没有添加到选项中。 var option = options.selectValueMap[value];

我添加了此代码以确保添加选项。看起来它不起作用。请注意,我有一个多选控件。

$('.js-select2-tags', $container).select2({
        tags: true,
        multiple: true,
        placeholder: jQuery(this).data('placeholder'),
        allowClear: false
    })

enter code here
angularjs angularjs-ng-repeat ng-options angularjs-ng-options jquery-select2
1个回答
0
投票

我想说可能是因为您的新选项没有价值,因此 options.selectValueMap 无法按预期工作。

它返回未定义

只需使用

进行测试
if(option && !option.disabled)
© www.soinside.com 2019 - 2024. All rights reserved.