Angular 和 Meteor 在页面加载时闪烁
Angular and Meteor flicker on page load
我有一个问题,angular-每次使用活动订阅的状态加载时,流星项目都会闪烁。通过闪烁,我的意思是数据在那里,然后它会消失并在半秒后回来。
我将这个添加到状态的 resolve
属性(使用 ui-router):
campaigns: ($q) => {
var deferred = $q.defer();
Meteor.subscribe('campaigns', {
onReady: deferred.resolve,
onStop: deferred.reject
});
return deferred.promise;
}
闪烁停止了,但我不太理解这段代码。懂angular的人能破解这个resolve/defer的情况吗?
只是不确定它为什么起作用。谢谢。
$q is angular's implementation of promises。
简而言之,一个 promise 有两个回调,当数据被 returned 时解析;如果调用成功则返回 resolve 函数,如果调用失败则返回 reject。它获得的任何数据都将传递给这些函数(本质上是 deferred.resolve(data) 或 deferred.reject(error))。 $q.defer() 允许我们稍后分配 resolution/rejections。
meteor's subscribe function takes a few arguments。集合的字符串名称,return 是要传递给集合的参数数组的函数,以及 object/function。最后一个参数的对象部分需要一个 "onReady" 和 "onStop" 函数,并将执行这些函数并传递它获得的任何数据。我们在这里传递我们的回调。
终于,我们return许诺了。 resolve.campaigns 将是一个承诺,我们可以使用 .then(successCallback, failureCallback) 调用获取值。 meteor 在幕后处理这个问题。
我有一个问题,angular-每次使用活动订阅的状态加载时,流星项目都会闪烁。通过闪烁,我的意思是数据在那里,然后它会消失并在半秒后回来。
我将这个添加到状态的 resolve
属性(使用 ui-router):
campaigns: ($q) => {
var deferred = $q.defer();
Meteor.subscribe('campaigns', {
onReady: deferred.resolve,
onStop: deferred.reject
});
return deferred.promise;
}
闪烁停止了,但我不太理解这段代码。懂angular的人能破解这个resolve/defer的情况吗?
只是不确定它为什么起作用。谢谢。
$q is angular's implementation of promises。
简而言之,一个 promise 有两个回调,当数据被 returned 时解析;如果调用成功则返回 resolve 函数,如果调用失败则返回 reject。它获得的任何数据都将传递给这些函数(本质上是 deferred.resolve(data) 或 deferred.reject(error))。 $q.defer() 允许我们稍后分配 resolution/rejections。
meteor's subscribe function takes a few arguments。集合的字符串名称,return 是要传递给集合的参数数组的函数,以及 object/function。最后一个参数的对象部分需要一个 "onReady" 和 "onStop" 函数,并将执行这些函数并传递它获得的任何数据。我们在这里传递我们的回调。
终于,我们return许诺了。 resolve.campaigns 将是一个承诺,我们可以使用 .then(successCallback, failureCallback) 调用获取值。 meteor 在幕后处理这个问题。