我的指令模板中有以下代码段
'<li ng-repeat="f in foos">' +
'<input type="radio" ng-change="foo(f.key)" ng-model="selectedFoo" name="foos" id="{{f.key}}" value="{{f.key}}">{{f.value}}</input>' +
'</li>' +
在我的链接方法中,我有
scope.foos = [
{ key: 'a', value: 'A', checked: true, symbol: 'a' },
{ key: 'b', value: 'B', symbol: 'b' },
{ key: 'c', value: 'C', symbol: 'c' }
];
scope.selectedFoo = "a";
我有方法 foo 可以做到这一点
scope.foo = function(selectedValue) {
scope.selectedMatchType = selectedValue;
};
我面临两个问题
- 即使我已将 ng-model 设置为 selectedFoo,但在渲染单选按钮时默认情况下不会设置下拉列表中的第一个元素。
- 对于列表中的每个元素,仅调用 foo 方法一次。所以,例如,如果我点击 A,foo 被调用,如果我然后点击 B,foo 被调用,如果我再次点击 A,foo 不会被调用,但如果我然后点击 C,foo 被调用。
这里出了什么问题?
最佳答案
请注意 ng-repeat为每个模板创建自己的范围,这意味着您必须在 ng-model 中使用 $parent 作为输入。
ng-model="$parent.selectedFoo"
也是您的代码示例的有效 fiddle : http://jsfiddle.net/hpeinar/5gj9y6k4/
关于javascript - AngularJs:默认情况下未选择单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28629432/