根据初始登录视图中的数据在后台加载视图

Load view in background based on data from initial login view

这不是我的实际用例,但我试图理解如何根据另一个视图使用 appgyver 超音速框架的信息加载视图的概念。

我有 3 页,Login.html、MainPage.html 和 Load.html。他们每个人都有自己的控制器。当应用程序打开时,它首先会转到登录页面。登录页面将用户名和密码发送到我的服务器,然后 returns 成功与否。成功后,应用程序将转到主页。我想让 load.html 了解已登录并开始加载包含用户适当内容的视图。因此,当用户从主页转到加载页面时,所有信息都已加载。我试图理解如何用超音速实现这一目标的概念。

您可以在控制器之间使用发布/订阅方法。

查看 this doc 以获得一些很好的示例。

基本上,您希望在用户登录时发布包含一些数据的消息。登录后的控制器将能够收听或订阅该消息。当它收到消息时,它将能够 运行 您在回调中告诉它的任何代码。

一个控制器将发布:

// gather some user data with successful login like var id = result.user.id
supersonic.data.channel('loginSuccess').publish({ userid: id });

另一个控制器将监听:

supersonic.data.channel('loginSuccess').subscribe( function(data) {
    $scope.id = data.userid;
    // load some data based on user id
});

您也可以预加载视图。这可能有助于加快速度。如果不这样做,您可能会在视图推送之间看到一个微调器。在 structure.coffee 配置文件夹中:

preloads: [
  {
    id: "viewIdYouSet"
    location: "nameOfModule#view"
  }
]

登录完成后,您可以找到预加载的视图并将其推送到堆栈:

supersonic.ui.views.find("viewIdYouSet").then( function(startedView) {
    supersonic.ui.layers.push(startedView);
});

希望对您有所帮助。