父指令中的angularjs函数未从已包含的html中调用

亚历克斯·曼

我已经使用angualrjs指令创建了一个像功能这样的下拉列表,该指令在某种程度上起作用了,但是并没有达到我期望的正确方式。
以下是我面临的问题。

  • 下拉列表对齐方式对静态而言正确,但对动态而言不正确
  • 我无法选择任何选项列表,因为getValue未从trancluded指令调用在父指令中定义的功能

谁能告诉我一些解决方案

我的代码如下

朋克

<div ng-controller="MainCtrl">

  Static
  <grant-parent ng-model="grand1">
    <parent label="Parent1" value="12">
      <child value="56" label="Child1">Child1</child>
      <child value="57" label="Child2">Child2</child>
    </parent>
    <parent label="Parent1" value="13">
      <child value="58" label="Child3">Child3</child>
      <child value="59" label="Child4">Child4</child>
    </parent>
  </grant-parent>


  Dynamic
  <grant-parent ng-model="grand2">
    <parent ng-repeat="parent in data" label="{{parent.parentName}}" value="{{parent.parentId}}">
      <child ng-repeat="child in parent.childrens" label="{{child.name}}" value="{{child.id}}">{{child.name}}</child>
    </parent>
  </grant-parent>

</div> 
尼科斯·帕拉斯科沃波洛斯

包容并ng-repeat引起了我的头痛,我认为这将是一个挑战,但是解决方案证明非常简单:

从链接函数中删除DOM操作,然后在模板中进行包含!

<div ng-transclude></div>在的模板中,parent然后删除以下行:elm.find('div').replaceWith(transclude())

分叉的朋克:http ://plnkr.co/edit/UGp6D29yxnu0uJwD1BM2? p= preview


现在标记变得有些不同,包装器<div>仍然存在。尽管似乎没有视觉差异,但这可能不是您想要的。我认为没有一种明智的方法可以解决此问题,因此我建议稍微改变一下布局:为什么不将孩子放置在父母的内部<li>,例如:

<li>
    <b><a href='#' ng-click='getValue(optGroupLabel,optGroupValue)'>{{optGroupLabel}}<span class='value'>{{optGroupValue}}</span></a></b>
    <div ng-transclude></div><!-- the div is now inside the li -->
</li>

这可以在插件中使用,但是标记仍然无效(<li>在内<div>)。

最好的解决方案是将孩子包装在自己的孩子中<ul>,即:

<li>
    <b><a href='#' ng-click='getValue(optGroupLabel,optGroupValue)'>{{optGroupLabel}}<span class='value'>{{optGroupValue}}</span></a></b>
    <ul ng-transclude></ul><!-- The div is replaced with ul -->
</li>

这虽然不能正常工作,但应进行一些CSS调整。


关于getValue您,您错了孤立范围和转写是如何工作的。grandParent指令getValue在其隔离范围内定义该方法。包含在内的事物(parentchild指令)获得外部范围,即的范围MainCtrl一个解决办法是移动getValue()MainCtrl

更好的解决方案是将回调传递给祖父母的后代,例如as scope: { assignValue: '&' }但是,由于祖父母没有直接包含其子代,因此无法将参数传递给它们,因此无法以当前形式的代码实现此解决方案。

最终解决方案-从注释中复制:移至grandParentgetValue控制器,让父级和子级需要祖父母并调用该函数。看到http://plnkr.co/edit/pS9SspLaoPlqoWMYr8I0?p=preview

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

父指令中的angularjs函数未从已包含的html中调用

来自分类Dev

父元素中不包含AngularJS指令

来自分类Dev

从子指令中调用父指令中的函数

来自分类Dev

从子指令调用函数并使用父指令中的变量

来自分类Dev

从$ rootScope中的指令调用函数-AngularJS

来自分类Dev

AngularJS在指令模板中调用通用函数

来自分类Dev

从$ rootScope中的指令调用函数-AngularJS

来自分类Dev

在AngularJS指令内单击包含在元素中的元素时调用函数

来自分类Dev

AngularJs指令:从模板中的父作用域调用方法

来自分类Dev

AngularJs指令:从模板中的父作用域调用方法

来自分类Dev

从深度嵌套的指令中调用父范围函数

来自分类Dev

在子指令中调用父指令的功能

来自分类Dev

AngularJS:使用包含时,如何在“模板”函数中获取原始指令HTML?

来自分类Dev

AngularJS:从子指令中要求父指令

来自分类Dev

父指令AngularJS无法访问已包含内容

来自分类Dev

父指令AngularJS无法访问已包含内容

来自分类Dev

如何使用angularjs中的指令添加的HTML使用$ scope调用函数

来自分类Dev

入门angularjs-在指令中包含指令

来自分类Dev

AngularJS:从我的指令中调用控制器函数

来自分类Dev

调用在AngularJS指令的属性中定义的函数

来自分类Dev

AngularJS指令:将调用函数放在一个属性中,而不包含另一个属性

来自分类Dev

指令中的AngularJS资源调用

来自分类Dev

如何从指令调用的函数中调用函数

来自分类常见问题

angularJS:如何在父范围中调用子范围函数

来自分类Dev

AngularJS-HTML中的调用函数

来自分类Dev

AngularJS-HTML中的调用函数

来自分类Dev

避免在angularjs指令中引用父范围

来自分类Dev

AngularJS在指令中操纵父级的DOM

来自分类Dev

从AngularJs指令调用函数

Related 相关文章

  1. 1

    父指令中的angularjs函数未从已包含的html中调用

  2. 2

    父元素中不包含AngularJS指令

  3. 3

    从子指令中调用父指令中的函数

  4. 4

    从子指令调用函数并使用父指令中的变量

  5. 5

    从$ rootScope中的指令调用函数-AngularJS

  6. 6

    AngularJS在指令模板中调用通用函数

  7. 7

    从$ rootScope中的指令调用函数-AngularJS

  8. 8

    在AngularJS指令内单击包含在元素中的元素时调用函数

  9. 9

    AngularJs指令:从模板中的父作用域调用方法

  10. 10

    AngularJs指令:从模板中的父作用域调用方法

  11. 11

    从深度嵌套的指令中调用父范围函数

  12. 12

    在子指令中调用父指令的功能

  13. 13

    AngularJS:使用包含时,如何在“模板”函数中获取原始指令HTML?

  14. 14

    AngularJS:从子指令中要求父指令

  15. 15

    父指令AngularJS无法访问已包含内容

  16. 16

    父指令AngularJS无法访问已包含内容

  17. 17

    如何使用angularjs中的指令添加的HTML使用$ scope调用函数

  18. 18

    入门angularjs-在指令中包含指令

  19. 19

    AngularJS:从我的指令中调用控制器函数

  20. 20

    调用在AngularJS指令的属性中定义的函数

  21. 21

    AngularJS指令:将调用函数放在一个属性中,而不包含另一个属性

  22. 22

    指令中的AngularJS资源调用

  23. 23

    如何从指令调用的函数中调用函数

  24. 24

    angularJS:如何在父范围中调用子范围函数

  25. 25

    AngularJS-HTML中的调用函数

  26. 26

    AngularJS-HTML中的调用函数

  27. 27

    避免在angularjs指令中引用父范围

  28. 28

    AngularJS在指令中操纵父级的DOM

  29. 29

    从AngularJs指令调用函数

热门标签

归档