如果方法返回数据,则在模块中加载(视图) - Aurelia

时间:2016-05-26 12:03:41

标签: aurelia aurelia-router

请原谅我的无知,但我刚刚开始使用Aurelia / ES6,此刻让我感到非常困惑。我对客户端框架完全不熟悉,所以我希望在框架内实现 的可能性。

因为标题表明我在一个类中提取数据:

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

现在我可以看到/接收那些很棒的数据但是在深入研究文档后我似乎无法弄清楚:

  1. 通过ID将单独的相关module/view加载到主视图(app.html)
  2. 如果没有数据,则错误且没有ID通过redirectno-form view
  3. 情境:

    用户A导航到“FormDesigner /#/ form / 3E7689F1-64F8-A5DA0099D992”,此时“A”落在表单页面上,现在如果成功并且数据返回通过{ {1}}在其他地方使用其他方法然后加载formId - 页面,可能使用module/view

    这可能非常简单,但文档(在我看来)似乎仅限于那些 new 的人。

    非常感谢任何指导/高级概念,一如既往,非常感谢!

    此致

1 个答案:

答案 0 :(得分:0)

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

如果要导航到模块,可以在视图模型上创建activate(args, config) { this.http.get(URL).then(resp => { if (resp.isOk) { // Do stuff } else { // Redirect } }); } 方法,该方法将在路由开始时调用。

在此方法中,您可以返回承诺(在获取数据时),并在获取失败时重定向

事实上,如果承诺被拒绝,路由将被取消

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

这样的东西
{{1}}