恢复操纵DOM的自定义指令

时间:2014-08-06 17:49:03

标签: angularjs angularjs-directive angularjs-scope directive

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

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

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

my-directive-parent指令在其指令定义对象中定义了自己的控制器 templateUrl 属性。 my-directive-child指令有自己的链接范围 templateUrl require 属性在其< em>指令定义对象。传递给链接函数的第四个参数是父my-directive-parent的控制器。这是按预期工作的。

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

我的问题在于根据此缓存的服务数据恢复my-directive-parent指令。目前,当运行my-directive-child指令的控制器时,我将获得服务数据数组,该数组表示要添加的实例,循环遍历它,以及向DOM添加新的my-directive-child实例。这是有效的,但是在恢复每个实例时,我需要使用之前由用户输入的数据预先填充它(其中记录在服务中)。目前,当以这种方式添加到DOM时,每个实例都处于“空白”状态而不是所需的预先填充状态。

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

我尝试在{{1}}上放置一个自定义attr,以便将数据转发到实例的范围,但我从Angular的API文档中了解到:

  

新范围规则不适用于模板的根目录,因为模板的根目录总是获得新范围

问题:

  • 我的方法有误吗?我该怎么办?
  • 有没有办法将实际元素指令上定义的attrs传递到代表内部模板HTML的指令范围?
  • 如何确保自定义指令中的自定义指令正确预先填充?

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

0 个答案:

没有答案