选中复选框时,DOM不显示element.input.checked和ng
DOM does not show element.input.checked when checkbox checked with ng-checked
当模式加载并满足特定条件时,默认情况下,我使用ng-checked
来选中复选框。但是,当我对该项执行if ( item.checked)
时,它将返回false。
我正在使用这样的指令。
app.directive( 'toggleButtons', [ function () {
return {
link: function ( scope, element ) {
var toggleButtons = element.find( '.input-add-checkbox' )
function checkState() {
Array.prototype.forEach.call( toggleButtons, function( each ) {
if ( each.checked )
each.parentNode.style.backgroundColor = "#00E0AA"
else if ( !each.checked )
each.parentNode.style.backgroundColor = "transparent"
})
}
Array.prototype.forEach.call( toggleButtons, function (each) {
each.addEventListener( 'click', function () {
checkState()
})
})
checkState()
}
}
}])
我的HTML就像这个
<label for="listen" type="button" class="type-toggle btn btn-green">
<input type="radio" id="listen" name="type" value="listen" ng-checked="{{ currentState == 'app.listen' }}" ng-model="contentParams.type" class="input-add-checkbox" />
<span class="glyphicon glyphicon-headphones"></span>
</label>
为了澄清,该项被正确检查,但JS中的样式在加载指令所在的模板时没有应用。另一个原因可能是它处于AngularUI模式。我也试过按一下暂停键,但没有什么乐趣。
以下是我如何完整使用该指令。
仅使用ng-model
和value
:
<input type="radio" id="listen" name="type"
value="app.init"
ng-model="contentParams.type" class="input-add-checkbox" />
这样,当ng-model
与复选框的值匹配时,将被选中。而不是if(each.checked)
,您应该对照值if(scope.contentParams && each.value === scope.contentParams.type)
进行检查
另一种解决方法是使用ng-attr
,但仅在第一次使用,并且在checkState
fn中,您仍然需要对照value
和scope.contentParams.type
进行检查
ng-attr-checked="{{contentParams.type ==='app.listen'}}
下面是一个工作示例
不要将ng检查和ng模型一起使用。使用ng选中+ng单击,或ng模型+ng更改。
类似的问题:AngularJS:ng模型未绑定到检查复选框
相关文章:
- 正在将base64 jpeg从input-type=file上传到服务器
- jQuery:.click(function(){(element),collapse('show',f
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 如何使用input-tage上传图片并查看在laravel中上传的文件预览
- Javascript - element.childNodes does not see an append.newch
- 使用element简化onclick函数
- $(input[]).仅在firefox中出现每个抛出语法错误
- AngularJS,angular.element($0).scope()揭示了每个控制器的函数
- 如何使用element.myobj.prop等具有对象属性的元素
- element.dataset in Internet Explorer
- Protractor:element.getText()返回一个对象,而不是String
- 我如何在INPUT TEXT中使用这个Javascript和jQuery
- 如何使用keyup或input进行操作?javascript(jQuery)
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- 无法使用 $('input[name=“rate”]').focus() 聚焦文本框;方法
- 选中复选框时,DOM不显示element.input.checked和ng
- AngularJS:使用 element.bind('input') 访问自定义指令中的事件
- 删除Parent Div以在不设置样式的情况下正确显示Form Input Element
- 不能在元素上创建checkboxradio.nodeName=input, element.type=text
- 我如何从php中获取一个值,并通过javascript将其放入input-element中