我有一个 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
我想说可能是因为您的新选项没有价值,因此 options.selectValueMap 无法按预期工作。
它返回未定义
只需使用
进行测试if(option && !option.disabled)