我正在尝试使用变量选择一个单选按钮,但是,虽然我可以打印所选的值,但该按钮不会保持选中状态。
此按钮在角度模板中定义如下:
<a ng-click="selectNode($event, node)">
<input type="radio" name="library" style="float:left;" id="id-{{n}}" />
</a>
其中id是GUID,因此绝对是唯一的。
然后,因为它是在选择按钮时调用的角点击事件,我在selectNode中调用此代码:
context.selectedNodes = [node];
$scope.selectedNode = node.$model.name;
var id = '#id-' + node.$model.id;
//console.log(typeof id);
//console.log(id);
$(id).prop("checked", true);
alert($("[name=library]:checked").val())
理论上应该检查单选按钮。但是,它检查片刻(当我调用警报时检查)然后似乎消失了。然而,我能够在id中进行硬编码并且保持检查状态。
答案 0 :(得分:0)
我建议您更多地使用工具潜水角度让您轻松处理这些事情。如果需要跟踪此输入的值,请将其绑定到模型。如果要在复选框更改后处理某些内容,请使用ng-change并将其绑定到函数。
<input type="radio" name="library" style="float:left;" ng-model=libraryModel ng-change="doSomething()" />
请记住,doSomething()需要在范围内,因此在控制器中,您需要将函数定义为$ scope.doSomething()。您的模型也将附加到$ scope对象,因此您将其引用为$ scope.libraryModel。您可以根据控制器中的默认值将模型初始化为true或false,然后任何用户更改都将自动更新此值。
答案 1 :(得分:0)
你正在混合使用jQuery和Angularjs,这并不值得。如果您在项目中使用AngularJs,则只需使用 AngularJS ngModel
即可执行以下操作。
<强>控制器强>
function Controller($scope) {
//Init data input to value 1
$scope.data = ['1'];
}
<强> HTML 强>
<input type="radio" name="name" value="1" ng-model="data">
<input type="radio" name="name" value="2" ng-model="data">
此处,我们的$scope.data
在我们的控制器中设置为 1 ,因此它将与第一个输入匹配。