我有两个自定义元素指令:

<my-directive-parent></my-directive-parent> //only one

<my-directive-child></my-directive-child> //variable count

my-directive-parent 指令在其指令定义对象中定义了自己的控制器和templateUrl属性 . my-directive-child 指令在其指令定义对象中定义了自己的link,scope,templateUrl和require属性 . 传递给link函数的第四个参数是父 my-directive-parent 的控制器 . 这是按预期工作的 .

根据用户输入, my-directive-child 的实例通过 my-directive-parent 's controller. Since I'm使用ngView附加到父级 my-directive-parent DOM或从顶级页面移除,更改页面会导致Angular自动清理各种指令及其顶级控制器 - 级别页面 . 返回后,页面的控制器重新运行,但用户附加的视图不会显示(因为它们之前已被Angular自动清除) . 我正在使用一个服务,该服务保存表示之前添加的 my-directive-child 实例集合的数据 .

我的问题在于根据此缓存的服务数据恢复 my-directive-child 指令 . 当前, my-directive-parent 指令's controller is run, I'获取表示要添加的实例的服务数据数组,循环遍历它,并向DOM添加新的 my-directive-child 实例 . 这是有效的,但在恢复每个实例时,我需要预先填充用户先前输入的数据(其中记录在服务中) . 目前,当以这种方式添加到DOM时,每个实例都处于"blank"状态而不是期望的预填充状态 .

所以我有重新创建子指令实例所需的数据,但是我无法用必要的数据预先填充它们 .

我试图在 my-directive-child 上放置一个自定义attr,以便将数据转发到实例's scope, but I learned from Angular'的API文档:

新范围规则不适用于模板的根,因为模板的根始终获得新范围

问题:

  • 我的做法错了吗?我该怎么办?

  • 有没有办法将实际元素指令上定义的attrs传递给代表内部模板HTML的指令范围?

  • 如何确保自定义指令中的自定义指令正确预填充自身?

提前感谢您提出可能导致可靠解决方案的任何想法,答案或想法 .