【发布时间】:2015-03-17 19:42:23
【问题描述】:
我有一个用于输入字段的指令,该指令使用嵌入来获取包含在指令元素中的元素,该元素包含ng-model 属性。在阅读了无数 SO 问题和 Angular 文档以了解如何让嵌入的 html 中的 ng-model 与我的指令中的 ng-model 同步后,我终于偶然发现了一个让它工作的技巧。那就是使用$parent,其中ng-model 在输入字段内。这一切都很好而且很花哨,但是,它看起来很笨拙/笨拙。
此处显示的 Plunker: http://plnkr.co/edit/gEje6Z2uuTs9DFPeCZfv
我试图通过在我的链接函数中搞乱嵌入函数来使它更优雅一点,如下所示:
```
var transcludedContent, transclusionScope;
transcludeFn(scope, function(clone, scope) {
//headerCtrl.$element.append(clone);
transcludedContent = clone;
transclusionScope = scope;
console.log('scope form: ', scope);
console.log('transclude form: ', clone);
});
```
此外,在此 Plunker 中显示: http://plnkr.co/edit/11k9LiA5hyi4xydWBo3H?p=preview
有人会认为嵌入函数允许您使用指令的范围覆盖嵌入范围,然后ng-model 属性将关联并绑定到指令范围,但事实并非如此。
虽然$parent.<ng-model> 确实有效,但它看起来很hackish,并且可能导致错误,例如如果我的指令未与未定义account 对象的父作用域一起使用。
【问题讨论】:
标签: angularjs angularjs-directive angular-ngmodel angularjs-ng-transclude