无法使用范围访问angularjs控制器中动态生成单选按钮的值

时间:2014-11-20 06:09:15

标签: angularjs

我在html中使用实践显示单选按钮是一个json数组

<div id="rows" ng-repeat="practice in practices">
    <input type="radio" ng-model="practice.id" ng-value="practice.id">
</div>

当我尝试使用控制器中下面提到的代码访问此单选按钮的值时,它给了我一条消息"undefined...."

$window.alert($scope.practice.id);

2 个答案:

答案 0 :(得分:0)

每个输入行都没有看到控制器,因此您的控制器可能适用于所有单选按钮。 所以你在你的范围内得到的实际上是$ scope.practices而不是$ scope.practice。 如果你想看到任何变化,你可以使用

$scope.$watchCollection('practices', function (newValue) {...});

答案 1 :(得分:0)

当您在ng-repeat中放置某些内容时,它会将值放在子范围内 - 因此您需要按集合的索引访问practices集合的各个值。

像这样:

$scope.practices[index].id

另一个选项是还有一个ng-click指令,允许您在用户选择ID时收到通知 - 您可以采用两种方式

或者:

ng-click="changedPracticeId($index)"

这将使用索引调用范围中定义的函数,因此您可以按索引访问单个项目,如上所述。那么函数看起来像这样:

$scope.changedPracticeId = function (index) {
    window.alert($scope.practices[index].id);
}

ng-click="changedPracticeId(practice.id)"

这会给你这个值的id,所以你的函数看起来像这样:

$scope.changedPracticeId = function (id) {
    window.alert(id);
}