AngularJS-ngrepeat中的ngmodel未更新(';虚线';ngmodel)

AngularJS-ngrepeat中的ngmodel未更新(';虚线';ngmodel),angularjs,scope,angular-ngmodel,Angularjs,Scope,Angular Ngmodel,我试着用角度阵列绘制RadioBox,然后得到选中的RadioBox的值,但模型并没有改变它的值,有人能帮我吗 HTML部分 <div ng-app> <div ng-controller="CustomCtrl"> <label ng-repeat="user in users"> <input type="radio" name="radio" ng-model="radio" value="{{use

我试着用角度阵列绘制RadioBox,然后得到选中的RadioBox的值,但模型并没有改变它的值,有人能帮我吗

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>

您可以在这里看到示例-

您需要将
$scope.radio
设置为如下对象:

$scope.radio = {
  name: 'John'
}
然后从html访问它,如下所示:

<input type="radio" name="radio" ng-model="radio.name" value="{{user.name}}" />

这是一张工作票

你可以读到为什么这是必要的

来自angularjs:

作用域继承通常是直接的,您甚至不需要知道它正在发生。。。直到您尝试将双向数据绑定(即表单元素、ng模型)从子范围内绑定到父范围上定义的基元(例如数字、字符串、布尔值)。它不像大多数人期望的那样工作。发生的情况是,子作用域获取自己的属性,该属性隐藏/隐藏同名的父属性。这不是AngularJS正在做的事情——这是JavaScript原型继承的工作方式

在模型中使用“.”将确保原型继承发挥作用。所以,使用


而不是


如果您确实想要/需要使用原语,有两种解决方法:

在子范围中使用$parent.parentScopeProperty。这将防止 子作用域无法创建其自己的属性。在上定义函数 父作用域,并从子作用域调用它,传递原语 值取决于父级(并非总是可能)

<input type="radio" name="radio" ng-model="radio.name" value="{{user.name}}" />
<input type="text" ng-model="someObj.prop1"> 
<input type="text" ng-model="prop1">