Javascript 不';t工作单选按钮angularjs
但当我选中单选按钮不改变ng model=“title”时,我遇到了问题 我修改了很多代码,但我找不到解决方案。有人能帮忙吗?我想这里有个问题? 有人能帮忙解决这个问题吗? 我有密码:Javascript 不';t工作单选按钮angularjs,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,但当我选中单选按钮不改变ng model=“title”时,我遇到了问题 我修改了很多代码,但我找不到解决方案。有人能帮忙吗?我想这里有个问题? 有人能帮忙解决这个问题吗? 我有密码: <div class="container"> <label data-ng-repeat="option in dbQuestion"> <input type="radio" name="form-field" ng-model="title" valu
<div class="container">
<label data-ng-repeat="option in dbQuestion">
<input type="radio" name="form-field" ng-model="title" value="{{option.title}}" ng-checked="$index == 0" />
{{option.title}}
</label>
<span>{{title}}</span>
</div>
您需要使用
$parent.title
而不是title
,如下所示:
<input type="radio" name="form-field" ng-model="$parent.title" value="{{option.title}}" ng-checked="$index == 0" />
ng repeat创建自己的作用域,为了将值从子作用域分配给父作用域,我们需要使用$parent新AngularJS开发人员通常没有意识到
ng repeat
,ng switch
,ng view
,ng include
和ng if
都会创建新的子作用域,因此当涉及这些指令时,问题往往会出现。(有关问题的快速说明,请参阅。)
通过遵循“最佳实践”,可以很容易地避免原语的这个问题–观看3分钟。Misko用ng开关演示了原语绑定问题
在模型中使用“.”将确保原型继承发挥作用。所以,使用
<label data-ng-repeat="option in dbQuestion">
<input type="radio" name="form-field"
ng-model="title.selected"
value="{{option.title}}"
ng-checked="$index == 0" />
{{option.title}}<br>
</label>
<p>Selected - {{title.selected}}</p>
有关详细信息,请参阅
角度模块(“应用程序”,[])
.controller(“ctrl”,函数($scope){
$scope.title={所选:'};
$scope.dbQuestion=[{
标题:“问题1”,
描述符:“描述1”,
答复:[{
第1项:“第1项”,
值:true
},
{item2:“item2”,值:true},
{item3:“item3”,值:true},
{
第四项:“第四项”,
值:true
}
]
},
{
标题:“问题5”,
描述符:“描述5”,
答复:[{
第1项:“第1项”,
值:true
},
{item2:“item2”,值:true},
{item3:“item3”,值:true},
{
第四项:“第四项”,
值:true
}
]
},
];
});代码>
{{option.title}}
选定-{{title.Selected}
angular标签应该移除-这是angular 2..4遵循黄金法则:在ng模型中始终添加一个点。可能重复。使用$parent
是一个更严重问题的症状。寻求更强大的解决方案。感谢您的评论:)我的理解是:ng repeat创建自己的作用域,为了将值从子作用域分配给父作用域,我们需要使用$parent,请让我知道您的看法。遵循“最佳实践”可以轻松避免原语问题当然–观看3分钟的节目。Misko用ng开关
演示了原语绑定问题。$parent
方法缺乏健壮性。如果模板更改为在控制器和ng model
指令之间具有更多作用域,该怎么办?无论有多少指令(如ng repeat
,ng switch
,ng if
,ng view
,ng include
等)介入,将ng model
绑定到对象的属性都会起作用。有关更多信息,请参阅。感谢分享:)以上发布的答案仅在发布的问题上下文中是一个过于简化的版本。我完全同意(并且有点害怕!)您关于此解决方案健壮性的观点:)
<label data-ng-repeat="option in dbQuestion">
<input type="radio" name="form-field"
ng-model="title.selected"
value="{{option.title}}"
ng-checked="$index == 0" />
{{option.title}}<br>
</label>
<p>Selected - {{title.selected}}</p>
app.controller("ctrl", function($scope) {
$scope.title = { selected: ''};
$scope.dbQuestion = [{ /*..*/ }];
});