2017-08-29 30 views
0

我有一个html页面,点击复选框会导致页面的新部分变为可见。该HTML看起来像这样:当通过javascript选择输入复选框时,不会触发ng-show

  <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显示,因此页面的隐藏部分不可见。为了完成这项工作,我还需要做些什么吗?

谢谢!

回答

1

您应该可以更改模型的值。由于NgModel提供了双向绑定,因此它也会观察$scope变量。

例如做

$scope.collapseform = false 

,而不是

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

这似乎工作,谢谢!我有时会注意到在选择和隐藏字段显示之间存在一个奇怪的延迟,但这似乎是做到了。非常感激! – monkeyWithAMachinegun

相关问题