У меня есть директива для поля ввода, которое использует трансклюзию, чтобы взять элементы, заключенные в элементе директив, который включает атрибут ng-model
. После прочтения бесчисленных вопросов SO и документации Angular, чтобы узнать, как заставить ng-model
в включенном html синхронизироваться с ng-model
в моей директиве, я, наконец, наткнулся на трюк, чтобы заставить его работать. То есть использовать $parent
, где ng-model
находится в поле ввода. Это все прекрасно и модно, однако кажется неуклюжим/хакерским.
Здесь показан плункер: 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);
});
```
Также показано в этом планкере: http://plnkr.co/edit/11k9LiA5hyi4xydWBo3H?p=preview< /а>
Можно было бы подумать, что функция включения позволит вам перезаписать область включения областью действия вашей директивы, тогда атрибуты ng-model
будут связаны и привязаны к области действия директивы, однако это не так.
Хотя $parent.<ng-model>
действительно работает, это кажется очень хакерским и может привести к ошибкам, например, если моя директива не использовалась с родительской областью, в которой не определен объект account
.