页面加载时角度和流星闪烁

时间:2016-01-08 07:50:13

标签: angularjs angular-meteor

我遇到了一个问题,每次使用广告系列订阅的州都会加载时,角度流星项目会闪烁。通过闪烁,我的意思是数据存在,然后它会消失并在半秒后回来。

我将其添加到州的resolve属性中(使用ui-router):

campaigns: ($q) => {
  var deferred = $q.defer();
  Meteor.subscribe('campaigns', {
    onReady: deferred.resolve,
    onStop: deferred.reject
  });
  return deferred.promise;
}

闪烁停止了,但我真的不明白这段代码。理解角度的人能否打破这种解决/推迟情况呢?

不确定为什么会有效。感谢。

1 个答案:

答案 0 :(得分:1)

$q is angular's implementation of promises

非常简单地说,一个promise有两个回调函数可以在返回数据时解析;如果呼叫成功,则为resolve功能;如果呼叫失败,则为拒绝。它获得的任何数据都将被传递到这些函数中(基本上是执行deferred.resolve(data)或deferred.reject(error))。 $ q.defer()允许我们稍后分配解析/拒绝。

meteor's subscribe function takes a few arguments。集合的字符串名称,返回要传递给集合的参数数组的函数,以及对象/函数。最后一个参数的对象部分需要一个“onReady”和“onStop”函数,并将执行这些函数并传递它获得的任何数据。我们在这里传递回调。

最后,我们回复了承诺。 resolve.campaigns将是一个promise,我们可以使用.then(successCallback,failureCallback)调用获取值。流星在幕后处理这个问题。