Angularjs访问动态元素的范围

Angularjs访问动态元素的范围,angularjs,dynamic,scope,angular-ng-if,Angularjs,Dynamic,Scope,Angular Ng If,我有两个无线电输入字段 <input type="radio" name="location_type" ng-model="location_type" value="ANYWHERE" required> Anywhere <input type="radio" name="location_type" ng-model="location_type" value="FIXED" required> Fixed 任何地方 固定的 如果所选收音机为“固定”,则使用n

我有两个无线电输入字段

<input type="radio" name="location_type" ng-model="location_type" value="ANYWHERE" required> Anywhere
<input type="radio" name="location_type" ng-model="location_type" value="FIXED" required> Fixed
任何地方
固定的
如果所选收音机为“固定”,则使用ng If显示另一个文本字段。此文本字段具有“必需”验证

<div ng-if="location_type == 'FIXED'">
    <input type="text" class="form-control" name="city" ng-model="city" placeholder="Enter City" ng-blur="cname=''" ng-focus="cname='bold'" required>
</div


您是否尝试过
ng required=“boolValueOrExpression”
?在您的案例中,这是一种有条件的验证。

您是否尝试过
ng required=“boolValueOrExpression”
?在您的情况下,这是一个有条件的验证。

指令
创建新的子范围

根据您的html,您将
city
分配给此
子范围
,而不是作为控制器的父范围

因此,在控制器中不可访问

所以,你需要这样做

像这样在父控制器中声明对象

$scope.parentObj = {};
并更改您的html

<input type="text" class="form-control" name="city" ng-model="parentObj" required>

现在,您的子作用域将从控制器获取继承的对象属性

因此,它将反映在控制器中

下面是工作指令
创建新的子作用域

根据您的html,您将
city
分配给此
子范围
,而不是作为控制器的父范围

因此,在控制器中不可访问

所以,你需要这样做

像这样在父控制器中声明对象

$scope.parentObj = {};
并更改您的html

<input type="text" class="form-control" name="city" ng-model="parentObj" required>

现在,您的子作用域将从控制器获取继承的对象属性

因此,它将反映在控制器中


这是工作原理

只需在输入时尝试使用
ng required=“location\u type=='FIXED'”
。只需在输入时尝试使用
ng required=“location\u type=='FIXED'”
。无需在parentobj内初始化元素$scope.parentObj={}works感谢solutionok,您可以从parentObj initialize中删除city参数为空,因为它实际上不是必需的。不需要在parentObj中初始化元素$scope.parentObj={}works感谢solutionok,您可以从parentObj initialize中将city参数删除为空,因为它实际上不是必需的。