为什么函数语句中的“ this”指向组件之间的错误范围?

时间:2019-07-08 08:58:43

标签: angularjs angularjs-components

  • 我有一个组件在一页上使用了多次。
  • 控制器中的第一行代码将“ this”存储在“ self”中,以便始终引用正确的作用域。
  • 当我调用函数语句时,我指的是self.content(为所有组件填充了唯一的数组),self始终是指最后创建的组件而不是自身。

为什么self.content突然用函数语句(function validateContent()而不是self.validateContent = function () {...}引用了另一个作用域?

我通过使函数语句成为自我self.validateContent = function() {...}上的内联语句来解决了这个问题。

component('panel', {
    binding: {
    Content: '<'    // is filled with a unique array per used component.
    },
    controller: function () {

        let self = this;

        self.onSelect() { // is called when an item is selected.

        /* item selection logic */
        function validateContent(); // Validate content after selection.

            self.Content.forEach(/*...*/);
            // Here self is using the scope from the last created component
            // and not the "true" self.
            }
        }

        validateContent();               
    }
});

我希望self能够引用组件的范围,因为我没有理由使validateContent()突然引用另一个组件的范围。

但是,当将self输出到控制台时,它包含来自最后创建的组件而不是当前组件的数据。

0 个答案:

没有答案