内部匿名函数中的Angular 6作用域

时间:2019-01-07 09:40:03

标签: angular angular6

所以在使用openlayers来访问函数调用内部范围内的字段时遇到了一些问题。

window.addEventListener('beforeunload', function(e) {
  var myPageIsDirty = tinymce.activeEditor.isDirty()
  if(myPageIsDirty) {
    //following two lines will cause the browser to ask the user if they
    //want to leave. The text of this dialog is controlled by the browser.
    e.preventDefault(); //per the standard
    e.returnValue = ''; //required for Chrome
  }
  //else: user is allowed to leave without a warning dialog
});

this.myFieldThatIsntInScope的第二个字段是有问题的一个字段,它似乎超出范围,然后该函数中的任何字段也超出了范围。

是否有办法限制这些范围,我尝试将各个字段分配给代码块父级中的变量,但似乎导致我正在使用的ol映射对象出现问题。

1 个答案:

答案 0 :(得分:1)

箭头函数本身不具有此功能; 使用封闭词法上下文的this值,即,箭头函数遵循常规的变量查找规则。

因此,在搜索当前范围中不存在的this时,他们最终从其包围范围中找到了它。因此,在以下代码中,传递给myFieldThatIsntInScope的函数中的this与词汇包围函数中的this具有相同的值。

  method() {
    this.myField.on('click',
      (args) => { this.myFieldThatIsntInScope(evt.pixel, (args) => { });
    });
  }