2015-09-25 104 views
2

我有以下功能从服务阅读:NG重复填充唯一窗口后点击 - AngularJS&PouchDB

var db = pouchService.db; 
db.allDocs({startkey: 'move_', endkey: 'move_\uffff', include_docs: true}) 
.then(function (data) { 
    $scope.recordlist = data; 
    console.log($scope.recordlist); 
}); 

服务:

angular.module('msfLogger').service('pouchService', PouchService); 

function PouchService() { 
    var self = this; 
    self.db= new PouchDB('FleetDB'); 
}; 

在前端,我想从$scope.recordlist填充ng-repeat,但现在,当我加载页面时,ng-repeat将为空,当我单击页面上的任何位置时,它将被填充。

此外,当我在数据库中添加一个新项目时,它只会在页面重新加载并单击窗口后显示,而不是自动显示。

<div class="row msf-row" ng-repeat="record in recordlist.rows"> 
    <div class="col-md-1">{{record.doc.time}}</div> 
    <div class="col-md-1"><strong>{{record.doc.car}}</strong></div> 
    <div class="col-md-2">{{record.doc.driver}}</div> 
    <div class="col-md-2">{{record.doc.from}}</div> 

    ... 
</div> 

我错过了什么?

+0

你缺少'$ apply' – Grundy

+0

@Grundy,我必须装在doc [角pouchdb(https://github.com/angular-pouchdb/angular-pouchdb)。我认为这是解决这个问题。 –

+0

所以你可以提供工作plunkr或jsfiddle?您的代码似乎很好 – Grundy

回答

1

我认为,即使您将angular-pouchdb作为库,您也需要将其注入到服务中,否则,您正在使用全局PouchDB库,并且应该手动管理$scope.$apply

angular.module('msfLogger', ['pouchdb']).service('pouchService', PouchService); 

function PouchService(pouchDB) { 
    var self = this; 
    self.db= pouchDB('FleetDB'); 
}; 
+0

它给了我'错误:[ng:areq] http://errors.angularjs.org/1.3。 0-rc.4/ng/areq?p0 = LoggerCtrl&p1 = not%20a%20function%2C%20got%20undefined' –

+0

@EricMitjans它看起来像是你的'LoggerCtrl'中的东西,与pouchdb无关。 – 7ictor