2014-10-27 48 views
0

我想確認這裏的方法。我的模型中的每個關係都是異步/惰性加載的。當記錄正在渲染時,手柄條模板會在將其數據填充到屏幕之前顯示。在下面的虛擬示例中,組中的所有用戶都會顯示紅色邊框,並且在將其全部填充時存在明顯延遲。Ember JS加載和錯誤子狀態

我已經簽出http://emberjs.com/guides/routing/loading-and-error-substates/並不認爲我需要一個空白的加載模板(如果我錯了,請糾正我);我只想顯示一個空白部分,並且模板(此處爲:紅色邊框和名稱)僅在用戶名稱填充時彈出。

Models.User = DS.Model.extend({ 
    email: DS.attr("string"), 
    firstName: DS.attr("string"), 
    group: DS.belongsTo("group", {async: true}) 
}); 

Models.Group = DS.Model.extend({ 
    title: DS.attr("string"), 
    users: DS.hasMany("user", { async: true }), 
}); 

{{#each user in group}} 
    {{#if user.isLoaded }} {{!-- I've also tried user.isFulfilled, user.firstName, user.email --}} 
    <div style="border: #f00 solid 1px;"> 
     {{user.firstName}} 
    </div> 
    {{/if}} 
{{/each}} 

回答

1

看一看jsbin http://jsbin.com/wenuy/2/edit

說明:

搜索表單(包含搜索文本框和提交按鈕是恆定的)。根據搜索詞,顯示結果的部分正在發生變化。

我已經使用isLoading屬性。這個想法是在調用服務器之前將它設置爲true,即加載消息。然後,在請求成功(即服務器以所需數據響應)時,將其設置爲false,以便「加載」消息隱藏並顯示結果部分。

+0

謝謝@蘇西。我遵循你的例子,在我的情況下,由於我不需要「加載...」部分,因此將上述內容更改爲「{{#unless isLoading}} ... {{/ unless}}」。再次感謝! – Michael 2014-10-27 21:31:59

+0

歡迎:)快樂編碼 – Susai 2014-10-28 01:56:28