0

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

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

4

1 回答 1

1

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

查看此文档以获取一些很好的示例。

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

一个控制器将发布:

// 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);
});

希望这可以帮助。

于 2015-06-18T00:55:40.720 回答