绑定到服务变量,不刷新(服务经常更改变量)

binding to service variable, doesnt refresh (service changes the var frequently)

在我的服务中,我有我想要显示的变量和它的吸气剂:

var docsLoaded = 0;
var docsToLoad = null;

pouchService.getDocsLoaded = function () {
    return docsLoaded;
};
pouchService.getDocsToLoad = function () {
    return docsToLoad;
};

服务正在同步,我想统计已同步的文档数

pouchService.syncNow = function () {

    var foundLastSeq = false;
    docsLoaded = 0;
    docsToLoad = null;

    remoteDB.info().then(function (remoteInfo) {

        function findOutDiff(localPosition) {
            docsToLoad = (remoteInfo.update_seq - localPosition) + 1;
            console.log("docs to load: " + docsToLoad);
        }

        // start Sync progress
        sync = localDB.sync(remoteDB, {live: false})
        .on('change', function (info) {
            console.log('AI change: ');
            console.log(info);
            if (info.direction === 'pull') {
                if (foundLastSeq === false) {
                    foundLastSeq = true;
                    findOutDiff(info.change.last_seq);
                }
            }
            console.log(docsLoaded + " from " + docsToLoad);
            docsLoaded++;
          })

在我的 HTML 中,我想这样显示进度:

{{pouchService.getDocsLoaded()}} from {{pouchService.getDocsToLoad()}}

现在我有时会从 getDocsLoaded 得到一个值,但大多数情况下是零。当我取消 Syncprogress 时,我得到它停止的值。

所以我在它真正开始之前和结束时得到了值,但我想要在同步过程中得到它。 (在控制台上,我的进度信息按预期工作)

有什么想法吗?

已解决:

$rootScope.$apply(function () {
   docsLoaded++;
});

问题在于应用范围。 Jim 写了一篇关于这个问题的好文章:

jimhoskins.com/2012/12/17/angularjs-and-apply.html