我正在构建一个相当复杂的指令,其中我需要访问模板中特定元素上的 ng-model ,该元素包含在 ng-if 指令中......我有一个plunker http://plnkr.co/edit/bQSIZE6gik36UkJkvTM0?p=preview下面是有关如何查看该问题的说明。
在指令的 .compile 函数中,我有一行代码,如下所示
ngModel = elm.find('textarea').controller('ngModel');
console.log(ngModel);
在我的模板中,我有这样的内容:
<div ng-if="views.view">
<textarea ng-model="exp.val"></textarea>
</div>
当我使用ng-show
my console.log
得到一个对象ng-model
, 没问题 ...
但是要求非常严格,我必须使用ng-if
。当我使用ng-if
我的控制台日志得到不明确的
问题的实际工作版本存在于此plunker http://plnkr.co/edit/bQSIZE6gik36UkJkvTM0?p=preview
如果将 template.html 中的第 6 行更改为 ng-if,您可以看到该行为。
当包含在 ng-if 中时,我必须如何编写这一行来检索模型。
ngModel = elm.find('textarea').controller('ngModel');
我也尝试过使用附加-如果 https://github.com/Sparks-Creative-Limited/angular-attach-if指令由西蒙·斯帕克斯 https://stackoverflow.com/users/2054713/simonsparks。这个指令非常酷,它保留了与 ng-if 不同的范围,因此如果您特别需要不渲染 HTML 但需要保留范围,它会非常有效。
我在调用 ngModel 时仍然遇到同样的问题,但由于在指令中应用自定义过滤器,我必须以这种方式更新 ng-model。
我距离完成这项指令仅一步之遥。希望有人可以提供帮助。