使用JQLite如何选择选择框中的一个或多个项

时间:2015-07-20 16:53:27

标签: javascript jquery angularjs karma-jasmine jqlite

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

我的列表包含[" banana"," apple"," orange"]。

我尝试直接设置值:

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()等于[]。

1 个答案:

答案 0 :(得分:0)

派对有点晚了,但我会把它留在这里给其他有同样问题的人。
我不知道您是如何为选择框构建选项的,moment("2008-03-09 18:02:29 UTC").tz('America/New_York'); // => EST 只要选项的值是香蕉,就应该可以正常工作。如果您还没有在ng-options上指定曲目,则角度创建的默认值将为sourceList.val("banana").triggerHandler('change');,因此'string:'+<option label>应该可以解决问题。