【发布时间】:2016-05-31 20:24:25
【问题描述】:
我观察到 <s:checkbox> 与 Bootstrap 3 和 AngularJS 一起呈现的一种非常特殊的行为。
我的页面中有这两个 <s:checkbox>,由 Bootstrap 3 样式的一些元素包裹:
<div class="col-md-1">
<div class="form-group">
<div class="form-other">
<label for="activaCheck"><s:text name="actividad.busqueda.activa"/></label>
<s:checkbox class="form-control" id="activaCheck" name="activaCheck" ng-model="formData.activaCheck" value="true"></s:checkbox>
<s:checkbox class="form-control" id="activaCheck2" name="activaCheck2" value="true"></s:checkbox>
</div>
</div>
</div>
如您所见,它们之间的唯一区别是第一个具有属性ng-model = "xxx",而第二个没有。
而且,在我的页面中,它们的呈现方式不同,尽管它们都应该是预先选择的,因为我设置了value="true"。而当我们在 FF 中检查时,我们可以看到 第一个 <s:checkbox> 有 checked="checked",但没有渲染。我在 Chrome 和 FF 中测试过,同样。
我还测试了<input type="checkbox" />,设置了ng-model和checked="checked",同样:在页面中呈现时未检查。
所以我在考虑 AngularJS 正在接管 Struts 2 负责的部分渲染工作,至少在这种情况下是这样。我想从 AngularJS 的开发者那里得到一些解释,或者这是预期的结果?
【问题讨论】:
-
如果是角度控制复选框,则通过模型预选。
-
是的,在页面呈现后继续使用 Angular 并从 Struts2 复选框中获取预先检查的值。
-
我可以说,如果我们把
ng-model放在这里,复选框会被Angular 接管吗?或者,Angular 在 Struts 之后工作,所以它们可能不一致? -
Struts 标签在这种情况下是不相关的。您可以将普通复选框输入与
checked="checked"一起使用,仍然可以获得相同的结果。由于ng-model,Angular 控制了这个输入。 -
Angular 在客户端工作,Struts 在服务器端工作,但 Angular 并不像社区传播的意识形态那样完美,并且也有缺点与优势相比,效果为零。
标签: angularjs twitter-bootstrap checkbox struts2