javascript - 使用 JQLite 如何在选择框中选择一个或多个项目

标签 javascript jquery angularjs karma-jasmine jqlite

我试图在单元测试的选择框中突出显示 1 个或多个项目。我正在使用 Karma、Jasmine 和 PhantomJS、AngularJS、JQLite、CoffeeScript。

我的列表有项目 [“香蕉”、“苹果”、“橙子”]。

我尝试直接设置值:

sourceList = element.find('select').eq(1)
sourceList.val("[banana]").triggerHandler('change');
// Or
sourceList.val("banana").triggerHandler('change');

当我获取 sourceList.val() 时,它尚未设置。

我尝试触发事件来选择它。请注意,我无法执行“单击”事件,因为单击时会触发另一个事件。

sourceList.find('option').eq(0).triggerHandler("active");
sourceList.find('option').eq(0).triggerHandler("focus");
sourceList.find('option').eq(0).triggerHandler("drag");
sourceList.find('option').eq(0).triggerHandler("dragLeave");

我尝试使用selectedIndex

sourceList.selectedIndex = 1

这些似乎都没有突出显示或选择该项目。我没主意了。有人做到了吗?

这是我正在尝试测试的指令的方法:

// Clicks on the add button. Should take all items highlighted and move them over
   $scope.add = function(){
        var sourceList = $element.find('select').eq(1);
        angular.forEach(sourceList.val(), function(val, index){
             $scope.selected.push({
                    text: val
             });
         });
         checkListDupes();
     };

当我在浏览器中手动执行此代码时,此代码可以工作,但在单击添加按钮之前,我似乎无法让我的测试突出显示选择框中的某些项目。所以当这段代码执行时sourceList.val()等于[]。

最佳答案

聚会有点晚了,但我会把它留在这里给其他有同样问题的人。
我不知道你是如何构建选择框的选项,但是 sourceList.val("banana").triggerHandler('change'); 只要期权的值(value)是香蕉,就应该可以正常工作。如果您没有在 ng-options 上指定轨道,则 Angular 创建的默认值将是 'string:'+<option label>所以sourceList.val('string:banana').triggerHandler('change');应该可以解决问题。

关于javascript - 使用 JQLite 如何在选择框中选择一个或多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31522064/

相关文章:

javascript - 检查对象是否在对象数组中 - javascript

javascript - 将生成的 PDF 保存在 FTP 服务器上

javascript - 从一个 Controller 设置到要在另一个 Controller 上使用的服务的值在使用 Angular js 刷新页面时不返回任何值(Angular 的新功能)

AngularJS 测试 rootScope.$broadcast 不起作用

JavaScript 测试日期(字符串格式)是否超过 30 天前

javascript - 在 NodeJS 中使用 Javascript 创建分层 PDF

javascript - React TypeScript 中 map 的 Highcharts 自定义数据?

javascript - 使用js从本地加载CSV文件: no error but no view

javascript - 用 Jquery 替换 Javascript 时代码不执行任何操作

javascript - 如何在 angularJS 中观看 promise ?