AngularJS-通过绑定将函数从父级传递给孩子的类控制器

时间:2019-01-09 10:13:02

标签: javascript angularjs binding parent-child

我正在使用AngularJS 1.7,并将代码基于以下Todd Motto样式指南:https://github.com/toddmotto/angularjs-styleguide

我想通过绑定将函数从父组件传递给子组件,如果我用console.log记录了函数,但我似乎无法在控制器上调用它。

这是我的代码:

parent.html

<child functionToRun="$ctrl.print(message)"></child>

parentController.js

export class ParentController {
  contructor($log) {
    'ngInject';
    this.$log = $log;
  }

  print(message) {
    console.log(message);
  }
}

child.component.js

import { ChildController } from './child.controller';
import templateUrl from './child.html';

export const ChildComponent = {
    templateUrl,
    controller: ChildController,
    bindings: {
        functionToRun: '&'
    }
};

childController.js

export class ChildController {
  constructor() {
    'ngInject';
  }

  $onInit() {
    this.functionToRun.call(this, 'hello');
  }
}

我已经搜索了类似的问题,但找不到任何问题,对不起,如果已经有一个问题。

这可能吗? (我想在控制器上调用它,而不是在HTML- $ scope上调用它)

如果可以,您能告诉我我的错误吗? 谢谢,谢谢

1 个答案:

答案 0 :(得分:0)

使用连字符传递函数,如下所示:

<child function-to-run="$ctrl.print(message)"></child>

然后使用一个对象调用该函数:

this.functionToRun({ message: 'hello' });