首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >动态超文本标记语言内容不是用vanillaJS代码生成的

动态超文本标记语言内容不是用vanillaJS代码生成的
EN

Stack Overflow用户
提问于 2018-06-23 18:10:23
回答 1查看 50关注 0票数 -4

在下拉列表中选择不同的值(使用鼠标)时,不同的HTML输入元素(按钮、输入字段等)会生成dynamically.But,当我使用

代码语言:javascript
复制
document.getElementsByTagName('select')[2].selectedIndex = 5;

不会生成这些HTML输入元素(按钮、输入字段等)。

网站版本为angular1.x

EN

回答 1

Stack Overflow用户

发布于 2018-06-23 20:19:08

VanillaJS更改不会触发AngularJS的$digest周期,因此AngularJS不知道selectedIndex更改的值。

为了触发循环,添加$scope.$apply();,如下所示:

代码语言:javascript
复制
document.getElementsByTagName('select')[2].selectedIndex = 5;
$scope.$apply();

话虽如此,但您并没有真正遵循AngularJS的良好实践。为了以编程方式选择selectedIndex的值,您应该更改下拉列表的模型值。

例如,你会有一个带有ng-model的下拉列表

代码语言:javascript
复制
<select ng-model="selectedIndex">
    <option>Option 1</option>
    <option>Option 2</option>
    <option>Option 3</option>
</select>

您可以通过在控制器中更改selectedIndex的值来以编程方式更改选定的值

代码语言:javascript
复制
app.controller("ctrl", function ($scope) {
    $scope.changeSelection = function (index) {
        $scope.selectedIndex = index;
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51000114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档