Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何将ng if作用域传递给父作用域_Angularjs_Angular Ng If - Fatal编程技术网

Angularjs 如何将ng if作用域传递给父作用域

Angularjs 如何将ng if作用域传递给父作用域,angularjs,angular-ng-if,Angularjs,Angular Ng If,ngIf在父范围内创建另一个范围。根据angular文档,正如我从中了解到的,理论上,is在范围内传递给父范围。但实际上,情况并非如此。我需要将此作用域功能传递给父作用域。我该怎么做呢 谢谢你的帮助。如果我理解你的问题,有很多方法可以解决这个问题(我试过)。提供了替代方案 方法1: 您可以在ng if中使用$parent,然后执行其余操作 方法2: 您只需要将结构修改为对象表示法,即{obj.yourval} <body ng-app="ngAnimate" ng-init="cool.m

ngIf
在父范围内创建另一个范围。根据angular文档,正如我从中了解到的,理论上,is在范围内传递给父范围。但实际上,情况并非如此。我需要将此作用域功能传递给父作用域。我该怎么做呢


谢谢你的帮助。

如果我理解你的问题,有很多方法可以解决这个问题(我试过)。提供了替代方案

方法1:

您可以在
ng if
中使用$parent,然后执行其余操作

方法2:

您只需要将结构修改为对象表示法,即
{obj.yourval}

<body ng-app="ngAnimate" ng-init="cool.mess='Im removed';checked=true">
   <br/> : {{cool.mess}}
   <br/> Click me: <input type="checkbox" ng-model="checked" /><br/>
  Show when checked:
  <span ng-if="checked" class="animate-if">
   <input type="text" ng-model="cool.mess"/>
  </span>
</body> 


:{{cool.mess}
单击我:
选中时显示:
抓取样品

方法3

您可以使用
ng hide
而不是使用
ng if
,它解决了所有的谜团(IMHO如果您与UI重构无关,那么这就是您的朋友)


PS:只是四舍五入,文档清楚地说如果使用
ng,那么它会创建一个子范围。因此,孩子可以访问父母的数据,而不是反过来。这就是为什么儿童结构的改变没有反映在父母层面的原因。使用上述任一选项。

您能创建吗?请创建一个示例,我还建议使用“控制器作为”,并删除范围。如果ngIf Expression为false,我不需要编译代码,因为它会影响功能,而不是ui,所以方法3不是我正在寻找的解决方案。我无法理解方法2。这是如何解决问题的。此外,我对方法1也不是很满意。$parent在ng if中使用的优点是什么。谢谢。@xxlali通常
$parent
在从子级内部访问时获取父级数据。再次看到我强调的
内部
子对象,因为您知道在子对象范围内,它只能访问
子对象的数据。因此,我们在child内部使用
$parent
来获取父数据#ng if创建一个单独的实例(如果使用)。我没有时间尝试。当我尝试时,如果这解决了我的问题,我会标记。别担心。