Angularjs 根据ng repeat中选定的收音机更改ng等级

Angularjs 根据ng repeat中选定的收音机更改ng等级,angularjs,Angularjs,我对angular很陌生,所以答案可能就在我面前,特别是因为我见过非常相似的问题,但没有一个对我有效。正如标题所示,我试图根据ng repeat中选择的3个单选按钮中的哪一个来更改ng class。我在示例中尝试过的一些事情是ng click,尽管这似乎是一种布尔true/false行为,我认为我需要更多类似于开关的行为。我也尝试过这个解决方案,尽管这在有条件的情况下似乎不起作用。以下是我的工作内容: <div class="col-md-4 col-sm-4 col-xs-12

我对angular很陌生,所以答案可能就在我面前,特别是因为我见过非常相似的问题,但没有一个对我有效。正如标题所示,我试图根据
ng repeat
中选择的3个单选按钮中的哪一个来更改
ng class
。我在示例中尝试过的一些事情是
ng click
,尽管这似乎是一种布尔
true/false
行为,我认为我需要更多类似于
开关的行为。我也尝试过这个解决方案,尽管这在有条件的情况下似乎不起作用。以下是我的工作内容:

<div class="col-md-4 col-sm-4 col-xs-12 projectType" ng-repeat="type in types">
   <label>
      <span class="typeIcon" ng-class="type.icon"></span>
      <p>{{ type.name }}</p>
      <input type="radio" name="type" ng-value="type" ng-model="$parent.selectedType" />
   </label>
</div>
<div class="col-md-12 col-sm-12 col-xs-12" ng-hide="selectedType.id !== 1">
    <input type="text" ng-hide="selectedType.id !== 1" ng-disabled="selectedType.id !== 1">
</div>
<div class="col-md-12 col-sm-12 col-xs-12" ng-hide="selectedType.id !== 2">
    <input type="text" ng-hide="selectedType.id !== 2" ng-disabled="selectedType.id !== 2">
</div>
<div class="col-md-12 col-sm-12 col-xs-12" ng-hide="selectedType.id !== 3">
    <input type="text" ng-hide="selectedType.id !== 3" ng-disabled="selectedType.id !== 3">
</div>

{{type.name}}

控制器只是将特性应用于每种类型,例如id和名称


我特别想做的是在选择
收音机时更改父标签的
背景色。我在下面另外添加了一些div,这些div也是根据选择的
radio
进行切换的,以显示一些现有逻辑,这些逻辑可能是任何可能解决方案的障碍或资产。我知道这在angular中可能是一项非常简单的任务,因此我感谢您的耐心和帮助。

您可以通过以下方式修改HTML:

<div class="col-md-4 col-sm-4 col-xs-12 projectType" ng-repeat="type in types">
   <label ng-class="{ 'red': $parent.selectedType.value === type.value }">
      <span class="typeIcon" ng-class="type.icon"></span>
      <p>{{ type.name }}</p>
      <input type="radio" name="type" ng-value="type" ng-model="$parent.selectedType" />
   </label>
</div>

您可以通过以下方式修改HTML:

<div class="col-md-4 col-sm-4 col-xs-12 projectType" ng-repeat="type in types">
   <label ng-class="{ 'red': $parent.selectedType.value === type.value }">
      <span class="typeIcon" ng-class="type.icon"></span>
      <p>{{ type.name }}</p>
      <input type="radio" name="type" ng-value="type" ng-model="$parent.selectedType" />
   </label>
</div>

以下是如何满足您的需求:

选择收音机时,其背景色将更改为红色,我为此创建了此类:

.selectedlabel { background-color: red; }
然后使用ng类将其应用于无线电输入的标签,如下所示

<label ng-repeat="type in types" ng-class="{selectedlabel: $parent.selected == type.id}">
<input type="radio" ng-model="$parent.selected" name="Group" ng-value="type.id"> {{type.name }}
<br>

{{type.name}}

为了使用选定的收音机显示/隐藏div,我使用了ng show

 <div ng-show="selected == 1">


完整的小提琴在这里:

这里是如何做你需要的:

选择收音机时,其背景色将更改为红色,我为此创建了此类:

.selectedlabel { background-color: red; }
然后使用ng类将其应用于无线电输入的标签,如下所示

<label ng-repeat="type in types" ng-class="{selectedlabel: $parent.selected == type.id}">
<input type="radio" ng-model="$parent.selected" name="Group" ng-value="type.id"> {{type.name }}
<br>

{{type.name}}

为了使用选定的收音机显示/隐藏div,我使用了ng show

 <div ng-show="selected == 1">


完整的细节在这里:

'red'是一个有红色背景的测试类。我要尝试一下,你能解释一下这里发生了什么吗
$parent.selectedType.value==type.value
我在'types'中使用了'value'属性,但你可以使用'id','name'或任何你喜欢的字段。我使用了“$parent.selectedType”,因为您使用它作为输入无线电的模型(最好避免名称以$开头,这通常指的是核心/系统属性)。当我真正在上下文中查看它时,不要介意这个愚蠢的问题。工作很有魅力,谢谢!是的,我很困惑,因为我在今天之前认为,您只能在声明后引用
ng模型,但这非常有意义。谢谢你“red”是一个有红色背景的测试类。我要尝试一下,你能解释一下这里发生了什么吗
$parent.selectedType.value===type.value
我在“type”中使用了“value”属性,但你可以使用“id”、“name”或任何你喜欢的字段。我使用了“$parent.selectedType”,因为您使用它作为输入无线电的模型(最好避免名称以$开头,这通常指的是核心/系统属性)。当我真正在上下文中查看它时,不要介意这个愚蠢的问题。工作很有魅力,谢谢!是的,我很困惑,因为我在今天之前认为,您只能在声明后引用
ng模型,但这非常有意义。非常感谢。