TypeError:无法获取未定义或null引用的属性'then'Angularjs Breeze

时间:2016-05-08 08:42:29

标签: angularjs breeze

从breeze控制器获取数据后,我收到以下异常。

  

TypeError:无法获取未定义或空引用的属性'then'

这是我的代码:

Student.js

function fetchUsers()
{
    return repository.GetAllUsers().then(function querySucceeded(data) {
        // Looks like the problem with the above 'then'
        vm.allUsers = data;
        return vm.allUsers;
    });
}

repository.js:

function GetAllUsers()
{                
    var query = EntityQuery.from('users');
    manager.executeQuery(query).then(querySucceeded, _queryFailed);               

    function querySucceeded(data) {                                    
        log('Retrieved [Lookups]', data, true);    
        return data.results;  //Here I can see the fetched data from breeze controller.
    }
}

当我用to$q替换时,我看到以下异常:

  

对象不支持属性或方法to$q

1 个答案:

答案 0 :(得分:1)

GetAllUsers函数在顶层没有return语句。

如果要返回解析为data.results链式保证,请在嵌套层次结构的每个级别包含return语句。

function GetAllUsers() {                
    var query = EntityQuery.from('users');

    //return derived promise     
    return (
        manager.executeQuery(query)
            .then(querySucceeded, _queryFailed)
    );               

    function querySucceeded(data) {                                    
        log('Retrieved [Lookups]', data, true);
        //return for chaining    
        return data.results;  //Here I can see the fetched data from breeze controller.
    };
};

嵌套函数需要每个级别的return语句。如果没有这个,函数返回null,导致无法获取属性'然后'未定义或空引用错误。