在下拉列表中选择不同的值(使用鼠标)时,不同的HTML输入元素(按钮、输入字段等)会生成dynamically.But,当我使用
document.getElementsByTagName('select')[2].selectedIndex = 5;
不会生成这些HTML输入元素(按钮、输入字段等)。
网站版本为angular1.x
发布于 2018-06-23 20:19:08
VanillaJS更改不会触发AngularJS的$digest周期,因此AngularJS不知道selectedIndex更改的值。
为了触发循环,添加$scope.$apply();
,如下所示:
document.getElementsByTagName('select')[2].selectedIndex = 5;
$scope.$apply();
话虽如此,但您并没有真正遵循AngularJS的良好实践。为了以编程方式选择selectedIndex的值,您应该更改下拉列表的模型值。
例如,你会有一个带有ng-model
的下拉列表
<select ng-model="selectedIndex">
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
您可以通过在控制器中更改selectedIndex
的值来以编程方式更改选定的值
app.controller("ctrl", function ($scope) {
$scope.changeSelection = function (index) {
$scope.selectedIndex = index;
}
});
https://stackoverflow.com/questions/51000114
复制相似问题