Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 恢复操作DOM的自定义指令_Angularjs_Angularjs Directive_Angularjs Scope_Directive - Fatal编程技术网

Angularjs 恢复操作DOM的自定义指令

Angularjs 恢复操作DOM的自定义指令,angularjs,angularjs-directive,angularjs-scope,directive,Angularjs,Angularjs Directive,Angularjs Scope,Directive,我有两个自定义元素指令: <my-directive-parent></my-directive-parent> //only one 及 my directive parent指令在其指令定义对象中定义了自己的控制器和templateUrl属性。my directive child指令有自己的链接、作用域、templateUrl和在其指令定义对象中定义的require属性。传递到link函数的第四个参数是parent my指令parent's controller。这

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

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

my directive parent指令在其指令定义对象中定义了自己的控制器和templateUrl属性。my directive child指令有自己的链接、作用域、templateUrl和在其指令定义对象中定义的require属性。传递到link函数的第四个参数是parent my指令parent's controller。这是预期的工作

根据用户输入,我的指令子对象的实例通过我的指令父对象的控制器附加到父对象我的指令父对象DOM或从父对象我的指令父对象DOM中删除。由于我将ngView用于顶级页面,因此更改页面会自动清理顶级页面的各种指令及其控制器。返回时,页面的控制器将重新运行,但用户附加的视图不会显示,因为它们以前是由Angular自动清除的。我正在使用一个服务,它保存表示先前添加的指令子实例集合的数据

我的问题在于基于缓存的服务数据恢复My指令子指令。当前,当运行my directive父指令的控制器时,我将获取表示要添加的实例的服务数据数组,在该数组中循环,并向DOM添加一个新的my directive子实例。这是可行的,但在恢复每个实例时,我需要使用用户以前输入的数据预填充它,这些数据记录在服务中。当前,以这种方式添加到DOM时,每个实例都处于空白状态,而不是所需的预填充状态

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

为了将数据转发到实例的作用域,我尝试在my指令child上放置一个自定义attr,但我从Angular的API文档中了解到:

新的作用域规则不适用于模板的根,因为模板的根总是获得一个新的作用域

问题:

我的方法错了吗?我该怎么办? 是否有方法将在实际元素指令上定义的属性传递到表示内部模板HTML的指令范围中? 如何确保自定义指令中的自定义指令正确预填充自身?
提前感谢您提出的任何想法、答案或想法,这些想法或想法可能会带来一个解决方案。

很难理解您在做什么。my directive子元素是否在my directive父元素的模板中?为什么不在my directive child上使用ng repeat?@JasonGoemaat否my directive child元素最初不在my directive父模板中,但后来根据用户输入添加到模板中。如前所述,我的方法可能是错误的。我现在认为你提到的ng重复方法可能是一条出路。基本上,项目数应该是0,最初没有子元素显示,但会根据用户输入进行更新,ng repeat会自动更新DOM,对吗?我认为这会更好,使用ng repeat并让数据驱动my指令子元素的创建。每个都应该有一个继承的子作用域,可以从ng repeat访问项,如果需要子作用域创建隔离作用域,可以在属性中设置该子作用域。如果您在获取数据时遇到任何问题,请告诉我更多信息,或者为其提出新问题。
<my-directive-child></my-directive-child> //variable count