我试图用角数组绘制radioBoxes,然后得到校验无线电的值,但是模型不会改变它的值--你,有人能帮我吗?
HTML部件
<div ng-app>
<div ng-controller="CustomCtrl">
<label ng-repeat="user in users">
<input type="radio" name="radio" ng-model="radio" value="{{user.name}}" /> {{user.name}}
</label>
<br/>
{{radio}}
<br/>
<a href="javascript:void(0)" ng-click="saveTemplate()">Save</a>
</div>
</div>
角部
function CustomCtrl($scope) {
$scope.radio = "John";
$scope.users = [
{"name" : "John", "Year" : 18},
{"name" : "Tony", "Year" : 19}
];
$scope.saveTemplate = function() {
console.log($scope.radio);
};
}
您可以在这里看到示例- http://jsfiddle.net/hgf37bo0/2/
发布于 2014-10-30 09:48:41
您需要将$scope.radio
设置为如下对象:
$scope.radio = {
name: 'John'
}
然后从html访问它,如下所示:
<input type="radio" name="radio" ng-model="radio.name" value="{{user.name}}" />
这是一个工作的小提琴
您可以阅读为什么这在这个回答中是必要的。
从安格拉尔斯文档
范围继承通常很简单,而且您甚至不需要知道它正在发生.直到您尝试将双向数据绑定(即表单元素、ng模型)从子作用域中绑定到在父作用域中定义的基元(例如数字、字符串、布尔值)。它不像大多数人期望的那样起作用。所发生的情况是,子作用域获得自己的属性,该属性隐藏/阴影同名的父属性。这不是AngularJS正在做的事情--这是JavaScript原型继承的工作方式。 ..。 有“.”在您的模型中,将确保原型继承正在发挥作用。所以,用
<input type="text" ng-model="someObj.prop1">
而不是
<input type="text" ng-model="prop1">
如果您确实希望/需要使用原语,有两个解决方案: 在子作用域中使用$parent.parentScopeProperty。这将防止子范围创建自己的属性。在父作用域中定义一个函数,并从子范围调用它,将原语值传递给父函数(不总是可能的)
https://stackoverflow.com/questions/26649364
复制相似问题