如果方法 returns 数据然后加载到模块(视图)中 - Aurelia

If method returns data then load in module(view) - Aurelia

请原谅我的无知,但我刚刚开始使用 Aurelia/ES6,目前有很多问题让我感到困惑。我对客户端框架完全陌生,所以希望我试图实现的目标 在框架内可能的。

正如标题所示,我正在 class:

中获取数据
import {inject} from "aurelia-framework";
import {HttpClient} from "aurelia-http-client";

let baseUrl = "/FormDesigner/";

@inject(HttpClient)
export class FormData{

    constructor(httpClient)
    {
        this.http = httpClient;
    }

    GetFormById(formId)
    {
        return this.http.get(`${baseUrl}/GetFormById/${formId}`)
                        .then(resp => resp.content);
    };
}

现在我可以 see/receive 很棒的数据,但在深入研究文档后我似乎无法弄清楚:

  1. 通过 Id 加载单独的相关 module/view 主视图 (app.html)
  2. 如果没有数据,错误并且没有传递 Id 那么 redirectno-form view

场景:

用户 A 导航到 "FormDesigner/#/form/3E7689F1-64F8-A5DA0099D992",此时 "A" 登陆表单页面,现在如果成功并且数据 已经 返回通过 formId 到其他地方的不同方法,然后加载到 module/view - Pages,可能使用 <compose></compose>

这可能真的很简单,但文档(在我看来)似乎相当限于新手

非常感谢任何 guidance/high 级别的概念,一如既往,非常感谢!

此致,

听起来您可能只想参与路由生命周期

如果您要导航到一个模块,您可以在视图模型上创建一个 activate 方法,该方法将在路由开始时调用。

在这种方法中,您可以 return 承诺(当您获取数据时)并在获取失败时重定向

实际上如果promise被拒绝,路由也会被取消

如果成功,您可以使用任何需要加载到模块中的方法(假设它不能只是正在加载的模块的一部分,因为路由不会被取消)

类似

activate(args, config) {
    this.http.get(URL).then(resp => {
        if (resp.isOk) {
           // Do stuff
        } else {
          // Redirect
        }
    });
}