无法使用控制器内的Mongoose查询访问范围变量集

时间:2015-04-10 16:31:22

标签: angularjs meanjs

在我的MEANJS应用程序中。我正在从我的控制器函数

中将范围变量的值设置为查询结果
$scope.myVar = User.query();
console.dir($scope.myVar);     //Returns all the documents from the DB correctly
console.log('User's name is : ' + $scope.myVar[0].name);   //This comes as undefined

不知何故,在我尝试在同一个控制器函数中打开名称字段的下一行中,它是未定义的。此外,在我的视图文件中正确读取整个结果。所以当我打电话时

{{myVar.name}}

在我的视图文件中,它正确输出名称。我根本无法理解这种行为。这是我第一次和Angularjs一起工作,我可能错过了一些基本的东西,但是我感谢你们现在的任何帮助。

编辑 - 此外,$ scope.myVar的长度在控制器中始终为0

2 个答案:

答案 0 :(得分:0)

基本上User.query()会返回一个promise对象,因此您需要在promise成功中更新$scope对象。

<强>代码

User.query().$promise.then(function(res){
   //you will get response here in data obj
   $scope.myVar = res;
   console.dir($scope.myVar);//Returns all the documents from the DB correctly
   console.log('User's name is : ' + $scope.myVar[0].name);   //This comes as undefined
});

答案 1 :(得分:0)

编辑:找到答案。 meanjs中的回调函数采用以下格式:

 var myObj= User.query(function(response) {
                console.log('Inside success response');
                 //Can access myObj values here easily
            }, function(errResponse) {
                console.log('Inside error response ' + errResponse);
        });

我无法弄清楚如何在控制器中访问我的$ scope.myVar,但是我通过创建自己的工厂方法来完成一种解决方法,以按照我想要的方式检索数据。无法访问这些查询结果的问题在其他部分也确实存在问题。所以,如果有人有答案,请告诉我。

现在发布链接我用来弄清楚MEAN.JS工厂方法是如何插入的。希望这对某人有帮助。

https://groups.google.com/forum/#!searchin/meanjs/query()/meanjs/4R7rIolH9bs/P1R4YlKgowUJ