2016-05-26 22 views
0

請原諒我的無知,但我剛開始使用Aurelia/ES6,現在很多困擾我。我對客戶端框架完全陌生,所以希望我想實現的可能在框架內。如果方法返回數據,然後在模塊中加載(視圖) - Aurelia

所以作爲標題所示,我在一個類中獲取數據:

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. 負載的單獨相關module/view通過ID輸入到主視圖(app.html)
  2. 如果沒有數據,錯誤和n ØID,然後在redirect傳遞到no-form view

場景:

用戶A導航到 「FormDesigner /#/表格/ 3E7689F1-64F8-A5DA0099D992」 在這一點上窗體頁上 「A」 的土地,現在如果成功和數據一直返回傳遞formId成不同的方法在其他地方,然後加載在module/view - ,可能使用<compose></compose>

這可能很簡單,但文檔(在我看來)似乎相當侷限於某人

真心感謝任何指導/高水平的概念,一如既往,永遠讚賞!

問候,

回答

0

聽起來像是你可能只想參加路由生命週期

如果您導航到一個模塊,您可以創建將路由啓動時調用視圖模型的activate方法。

在此方法可以返回一個承諾(當你獲取數據)和重定向如果獲取失敗

事實上,如果承諾被拒絕,路由將被取消

如果成功的話,你可以使用你需要你的模塊中加載任何方法(假設它不能僅僅是被加載,因爲路由不會取消該模塊的一部分)

喜歡的東西

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