AngularJS组件:与“AngularJS组件”相反;“回调”;结合

AngularJS组件:与“AngularJS组件”相反;“回调”;结合,angularjs,Angularjs,有时,AngularJS自定义组件可以从触发特定行为的方法中获益。一个通用示例可能是触发组件重置为初始状态。但是AngularJS似乎没有一个干净的方法来实现这个功能。我能想到的所有方法似乎都不太理想 1.向DOM元素本身(而不是组件)添加一个方法,并在父元素中直接调用它 在组件中 $ctrl.$postLink = function () { $element[0].reset = $ctrl.doReset; bindings: { tiggerReset: "<"

有时,AngularJS自定义组件可以从触发特定行为的方法中获益。一个通用示例可能是触发组件重置为初始状态。但是AngularJS似乎没有一个干净的方法来实现这个功能。我能想到的所有方法似乎都不太理想

1.向DOM元素本身(而不是组件)添加一个方法,并在父元素中直接调用它 在组件中

$ctrl.$postLink = function () {
    $element[0].reset = $ctrl.doReset;
bindings: {
    tiggerReset: "<"
在父母中

$element.find("my-component")[0].reset();
<my-component trigger-reset="$ctrl.triggerComponentReset" />
$element.find("my-component").controller("myComponent").doReset();
2.使用单向绑定并“伪造”更改 在组件中

$ctrl.$postLink = function () {
    $element[0].reset = $ctrl.doReset;
bindings: {
    tiggerReset: "<"
在父母中

$element.find("my-component")[0].reset();
<my-component trigger-reset="$ctrl.triggerComponentReset" />
$element.find("my-component").controller("myComponent").doReset();
(请注意,必须构造一个新字符串,以便AngularJS认为绑定已更改。)

3.直接从父级访问控制器 在父母中

$element.find("my-component")[0].reset();
<my-component trigger-reset="$ctrl.triggerComponentReset" />
$element.find("my-component").controller("myComponent").doReset();
似乎我缺少了一种更为惯用和/或优雅的方法