角度组件语法,回调函数使用错误的上下文调用

Angular component syntax, callback function called with wrong context

本文关键字:错误 上下文 调用 函数 组件 语法 回调      更新时间:2023-09-26

我正在使用NG6 Starter样板制作一个angular应用程序。

现在,我有了一个组件和另一个组件,我通过一个属性向内部组件发送一个回调函数。这就是我初始化内部组件的方式:

<div>
<location-form location='vm.location' submit-callback='vm.addLocation'>
</location-form>
</div>

父控制器上的addLocation函数被调用,但问题是它被调用时this是子组件(位置窗体)的控制器。

我试过使用bind,但angular有问题。。有什么想法吗?

组件定义:

import template from './locationForm.html';
import controller from './locationForm.controller';
import './locationForm.styl';
let locationFormComponent = {
  restrict: 'E',
  bindings: {
    location: '=',
    submitCallback: '=',
    parentController: '='
  },
  template,
  controller,
  controllerAs: 'vm'
};
export default locationFormComponent;

控制器:

<form ng-submit="vm.submitCallback(vm.location)">
     ...
      <button type="submit" class="btn btn-default">Submit</button>
</form>

谢谢,Uri

我也有同样的问题。到目前为止,对我有效的解决方案是将作用域传递给component/指令,然后使用apply确保它使用正确的作用域调用回调。