【问题标题】:ng-show not triggered when input checkbox selected via javascript通过javascript选择输入复选框时未触发ng-show
【发布时间】:2017-08-30 05:29:15
【问题描述】:

我有一个 html 页面,单击复选框会导致页面的新部分可见。 HTML 如下所示:

            <input id="formcheck" ng-model="collapseform" type="checkbox">Fill in the Test Form         
            <div id="mainformdiv" class="wizard-div" ng-show="collapseform">                
                    <div>                           
                        <div class="main-block">    
                                ...and so on
                        </div>
                    </div>
            </div>

这部分工作正常 - 默认情况下,页面的一部分是隐藏的,当我选择复选框时,页面的其余部分会出现。当我取消选择它时,页面的其余部分将再次隐藏。

在同一页面的下方有一个表,当您在该表中选择一个节点时,它会调用一个控制器函数,该函数会导致设置一些内部值 - 这部分也可以,因此控制器似乎已设置正确启动,所有函数都可以调用。

我看到的问题是:我想在选择表节点时调用的控制器函数中添加一点,除了设置内部值(其中它确实正确),还选中复选框,并导致页面的隐藏部分显示为响应。我想如果我通过 javascript 勾选了复选框就可以做到这一点,所以我将这个添加到内部值设置函数中:

        if (document.getElementById("formcheck").checked == false) {
            document.getElementById("formcheck").checked = true;
        }

这种工作 - 调用该段代码时复选框确实会被选中,但是,与我用鼠标单击复选框时不同,它似乎不会触发 ng-show,因此隐藏部分页面的不可见。为了完成这项工作,我还需要做些什么吗?

谢谢!

【问题讨论】:

    标签: javascript html angularjs checkbox


    【解决方案1】:

    您应该能够更改模型的值。由于 NgModel 提供了双向绑定,因此它也会监视 $scope 变量。

    例如做

    $scope.collapseform = false
    

    而不是

    if (document.getElementById("formcheck").checked == false) {
        document.getElementById("formcheck").checked = true;
    }
    

    【讨论】:

    • 这似乎有效,谢谢!我有时会注意到进行选择和显示隐藏字段之间存在奇怪的延迟,但这似乎做到了。非常感谢!
    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 2019-05-22
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多