Angular 1.5 组件可以轻松地从组件创建对父级的回调。有没有办法可以从父控制器中的函数调用组件中的函数?
假设我的组件称为任务运行器,下面是它在父容器中的 HTML。
<task-runner taskcategogyid=5></task-runner>
<button type="button" ng-click="doSomethingInParent()">ParentToChildButton</button>
plunkr 是here http://plnkr.co/edit/CtQ33KabRgQYKha1hr7m?p=preview。我希望当单击 ParentToChildButton 时,函数 doSomethingInParent() 调用组件中的remotefunc。
几种不同的方式:
- 通过双向绑定将对象作为属性传递(
scope:{myattr:'='}
) 到任务项标头指令,然后该指令可以添加一个函数以供父控制器调用。
- 设置具有单向绑定的属性 (
scope:{myattr:'@'}
)然后attrs.$observe
对其进行更改以触发操作,或双向绑定(scope:{myattr:'='}
) 进而$scope.$watch
对其进行更改以触发操作。
- 让指令引发一个事件(
scope:{raiseLoaded:'&onLoaded'}
),它传递一个代表远程控制对象的对象,该对象上有一个方法可以触发您想要的操作。要引发事件,您可以调用类似的内容raiseLoaded({remoteControl: remoteControlObj})
在指令中,然后要监听事件,您可以使用<task-item-header on-loaded="setRemote(remoteControl)">
假设你有一个setRemote()
父控制器上的方法。
Update我刚刚意识到你的问题是针对较新版本的 AngularJS,所以我不确定我的答案是否仍然适用。我暂时将其留在这里,但如果您发现它没有帮助,我可以将其删除。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)