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

无法使用作用域访问angularjs控制器中动态生成单选按钮的值,angularjs,Angularjs,我正在用一个json数组显示html中的单选按钮 <div id="rows" ng-repeat="practice in practices"> <input type="radio" ng-model="practice.id" ng-value="practice.id"> </div> 每个输入行看不到控制器,因此您的控制器可能适用于所有单选按钮。 因此,在您的范围内得到的实际上是$scope.practices,而不是$scope.pra

我正在用一个json数组显示html中的单选按钮

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

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

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

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

像这样:

$scope.practices[index].id
另一个选项是还有一个ng click指令,允许您在用户选择id时收到通知-您可以通过两种方式进行操作

要么:

ng-click="changedPracticeId($index)"
这将使用索引调用范围中定义的函数,因此您可以按索引访问单个项,如上所述。然后该函数可以如下所示:

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

这将为您提供值的id,因此您的函数将如下所示:

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