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

Posted

技术标签:

【中文标题】Angular 组件语法,使用错误上下文调用的回调函数【英文标题】:Angular component syntax, callback function called with wrong context 【发布时间】:2016-04-07 12:41:33 【问题描述】:

我正在使用 NG6-Starter 样板开发一个 Angular 应用程序。

现在,我有一个组件,其中包含另一个组件,并且我正在通过属性向内部组件发送回调函数。这就是我初始化内部组件的方式:

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

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

我尝试使用绑定,但 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>

谢谢, 乌里

【问题讨论】:

你能发布你的指令代码吗? 已添加。现在我通过将父控制器作为道具传递来解决它 如果您希望您的指令具有与其父级相同的父级控制器/范围 (vm),您可以定义 scope: false 控制器代码是?.. 控制器并不真正相关,因为被调用的函数是从视图调用的,它是回调函数 【参考方案1】:

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

【讨论】:

以上是关于Angular 组件语法,使用错误上下文调用的回调函数的主要内容,如果未能解决你的问题,请参考以下文章

收到错误“JSONP 注入脚本未调用回调。”使用 Angular 2 和服务器 ASP.NET 核心

更新Angular组件回调函数中对象的属性

Angular $http 错误回调响应始终未定义

Angular 4:JSONP 注入脚本未调用回调

Angular 1.5 组件中的“&”

回调在 Angular2/Firebase 中生成“TypeError:这是未定义的”