我观察到<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"
。
而且,在我的页面中,它们的呈现方式不同,尽管它们都应该是预选的,因为我设置了<s:checkbox>
。当我们在FF中进行检查时,我们可以看到第一个checked="checked"
已<input type="checkbox" />
,但未呈现。我已在Chrome和FF中进行过相同的测试。
我还使用ng-model
设置了checked="checked"
和let something:SKSpriteNode = SKSpriteNode()
func start(){
let rotateAction = SKAction.rotateToAngle(CGFloat(M_PI), duration: 10.0)
something.runAction(SKAction.sequence([rotateAction]))
}
进行了测试,相同:在页面中呈现时未检查。
所以我在考虑AngularJS正在接管Struts 2负责的部分渲染工作,至少在这种情况下。我想从AngularJS的开发者那里得到一些解释,或者这是预期的结果吗?
答案 0 :(得分:1)
我遇到了未选中复选框的问题。因为它具有ng-model
属性,所以输入控件绑定到Angular的$scope
。如果范围没有为上面提到的复选框定义属性值,则不会选中它。假设AngularJS一旦初始化就修改DOM。
我创建了plnkr来演示它。
你是对的AngularJS在加载文档后开始工作。此时Struts已完成其工作并将html文档返回给浏览器。现在Angular继续准备页面只在一个页面上工作。两者互为补充,但如果Struts用于渲染
<input type="checkbox" ng-model="checkboxModel.value1" checked="checked">
Angular删除已检查状态,因为该值已注释
angular.module('checkboxExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.checkboxModel = {
//value1 : true,
value2 : 'YES'
};
}]);