绑定到服务变量,不刷新(服务经常更改变量)
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 写了一篇关于这个问题的好文章:
在我的服务中,我有我想要显示的变量和它的吸气剂:
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 写了一篇关于这个问题的好文章: