Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象CouchDoc成员不可访问_Javascript_Angularjs_Couchdb - Fatal编程技术网

Javascript 对象CouchDoc成员不可访问

Javascript 对象CouchDoc成员不可访问,javascript,angularjs,couchdb,Javascript,Angularjs,Couchdb,所以我用 访问我的CouchDB。如果我打印对象,它会显示整个内容 但如果我打印出这个对象的一个成员变量,我知道它在那里,我会告诉我未定义 我猜这和原型设计有关 这可能是什么。正如Michael提到的,这是对获取$scope.item的异步性质的一种处理。我遇到了一个类似(或相同?)的问题,并通过调用$scope.$digest()修复了它。文档中说,您通常不需要显式调用,因为它将为您执行$digest,但是$scope.$digest()更简单(至少在这种情况下,它是最有意义的) 因此,请澄

所以我用 访问我的CouchDB。如果我打印对象,它会显示整个内容

但如果我打印出这个对象的一个成员变量,我知道它在那里,我会告诉我未定义

我猜这和原型设计有关


这可能是什么。

正如Michael提到的,这是对获取$scope.item的异步性质的一种处理。我遇到了一个类似(或相同?)的问题,并通过调用$scope.$digest()修复了它。文档中说,您通常不需要显式调用,因为它将为您执行$digest,但是$scope.$digest()更简单(至少在这种情况下,它是最有意义的)

因此,请澄清:$scope.item打印到控制台的原因是定义了$scope.item,即使在调用时它是空的。但是,在调用时,$scope.item没有属性,因此$scope.item.author未定义

下面是我的代码中的一个示例。您的想法应该是类似的(我使用的是kanso db包)


您是否将console.log语句放在后面?/。。。。作用var doc=这个;返回$http(extendJSONP(config)).success(函数(数据){ng.copy(数据,文档);});我认为angular.copy也可能在itOk中扮演一个角色,它的工作间隔为两秒。但它怎么会得到数据却还没有被复制?!这可能是因为您正在向控制台打印对象。如果控制台非常酷和聪明,那么控制台可能会显示实时数据,而不仅仅是记录对象时的数据。如果您尝试记录特定属性(例如作者),则只会打印该值,如果数据从服务器到达,则不会更新该值。我猜您正在调用$scope.item.load(),对吗?这是异步的。但是,如果您使用的是ng bind或ng模型,对于angular来说并不重要。如果数据到达,angular将更新视图。如果要确保在数据到达时首先访问属性,则应写入:$scope.item.load().success(函数(数据){console.log(数据.author)});当我调用digest时,它遇到一个错误:[$rootScope:inprog]$digest已经在进行中。我按照Michael的建议解决了这个问题,将功能放在success clojure中。这不是最好的解决方案,因为我调用了两次object load(),但它可以工作。
console.log($scope.item);
console.log($scope.item.author);
db.getList('problems', 'questionsByBranch', 'questions', function (err, data) {
    if (err) 
        return alert(err);

    $scope.questionsByBranch = data;    
    $scope.$digest();
});