首页 > 解决方案 > Uncaught (in promise) TypeError: this.getChildrem is not a function

问题描述

我有以下内容:

getitem: function(){
    $this.users = $data.data;
    $this.users = $this.users.filter( function(item) {
    if(item.status === true ) { 
        if( item.children.length > 0 ){
            item.children = this.getChildrem(item.children, true);
        }
        return item;
    }}); 
},
getChildrem: function(node, estatus){
    $children = node.filter( function(item) {
    if(item.status === estatus ) {              
        if( item.children.length > 0 ){
            item.children = this.getChildrem(item.children, estatus);
        }
        return item;
    }});       
    return $children;    
},

这是一个简单的递归函数,我只得到状态为“true”的所有项目(父母和孩子),但我遇到了这个错误:

Uncaught (in promise) TypeError: this.getChildrem is not a function

为什么我收到这个错误???

标签: javascript

解决方案


当您定义传入的函数时,node.filter上下文this会发生变化。你可以通过传入一个箭头函数来避免这种情况,或者使用.bind.

所以而不是

getChildrem: function(node, estatus){
    $children = node.filter( function(item) {

尝试这个:

getChildrem: function(node, estatus){
    $children = node.filter( (item) => {

推荐阅读