Angularjs 当我 select 来自 jquery 的值时范围未更新
Angularjs scope not updating when I select the value from jquery
我正在用 selenium
编写 cucumber
测试。问题是有一个下拉菜单,我 select 其中一个值使用 jquery,但是当我按下下一步时它给出错误。
基本上angular还没有更新它的范围。
<select name="837" id="answer_837" class="donothing_to_my_select ng-scope ng-pristine ng-invalid ng-invalid-required" ng-model="answers[question.question_id]" ng-options="obj.possible_answer_id as obj.answer for obj in question.possible_answers" required="">
<option class="" value="">--Select Option--</option>
<option label="b" value="0">b</option>
<option label="d" value="1">d</option>
<option label="c" value="2">c</option>
<option label="a" value="3">a</option>
</select>
在同一个黄瓜中,场景 I 运行 这个 jquery 代码到 select 第三个选项:
$('#answer_837 option[label=c]').prop('selected',true)
这将 select 第三个选项,但是,同样,它不会更新 angular 范围。
然后我尝试获取范围对象 $apply
,但它也不起作用。
var newVal = $('#answer_837 option[label=c]').val();
var scope = angular.element($("select")).scope();
scope.$apply(function(){
scope.answers[837] = newVal;
});
试试这个:
$('#answer_837').prop('value',2);
$('#answer_837').trigger('change');
我正在用 selenium
编写 cucumber
测试。问题是有一个下拉菜单,我 select 其中一个值使用 jquery,但是当我按下下一步时它给出错误。
基本上angular还没有更新它的范围。
<select name="837" id="answer_837" class="donothing_to_my_select ng-scope ng-pristine ng-invalid ng-invalid-required" ng-model="answers[question.question_id]" ng-options="obj.possible_answer_id as obj.answer for obj in question.possible_answers" required="">
<option class="" value="">--Select Option--</option>
<option label="b" value="0">b</option>
<option label="d" value="1">d</option>
<option label="c" value="2">c</option>
<option label="a" value="3">a</option>
</select>
在同一个黄瓜中,场景 I 运行 这个 jquery 代码到 select 第三个选项:
$('#answer_837 option[label=c]').prop('selected',true)
这将 select 第三个选项,但是,同样,它不会更新 angular 范围。
然后我尝试获取范围对象 $apply
,但它也不起作用。
var newVal = $('#answer_837 option[label=c]').val();
var scope = angular.element($("select")).scope();
scope.$apply(function(){
scope.answers[837] = newVal;
});
试试这个:
$('#answer_837').prop('value',2);
$('#answer_837').trigger('change');