我在我的代碼經常使用(我不知道我是不是正確的使用它):灰燼2,一個空模型,而不是裝載在HBS模板顯示消息,每個或者
{{#each model.posts as |post|}}
<div>post.title</div>
{{else}}
<div>I'm loading the posts...</div>
{{/each}}
直到今天一切正常。
但是現在我不知道model.posts是否爲空。
如何顯示一個錯誤,而不是永遠加載一個空數組?
我在我的代碼經常使用(我不知道我是不是正確的使用它):灰燼2,一個空模型,而不是裝載在HBS模板顯示消息,每個或者
{{#each model.posts as |post|}}
<div>post.title</div>
{{else}}
<div>I'm loading the posts...</div>
{{/each}}
直到今天一切正常。
但是現在我不知道model.posts是否爲空。
如何顯示一個錯誤,而不是永遠加載一個空數組?
模型上的關係返回PromiseArray
,其解析爲RecordArray
。在RecordArray
上,您可以查詢isLoaded
。但是,您無法訪問此屬性,因爲PromiseArray
未將此代理代理到底層RecordArray
。然而PromiseArray
實施了PromiseProxyMixin
,其具有isPending
和isSettled
可用。
結賬this twiddle爲工作解決方案。
基本上,這是工作代碼:
{{#each model.posts}}
{{else}}
{{#if model.posts.isPending}}
<div>lade...</div>
{{else}}
<div>nix da :(</div>
{{/if}}
{{/each}}
這兩個選項來我的腦海:
使用燼-承諾-幫手,很容易直接在你的模板中使用:https://github.com/fivetanley/ember-promise-helpers
如前所述,如果您正在使用RecordArray,請檢查isLoaded
屬性。
你能寫一個第二個例子嗎? –
勒克斯的答案有一個完整的例子 –
勒克斯的答案不工作...請檢查它。 –
我喜歡這個,但我看到:'isLoaded'和'isLoading'。爲什麼?我應該使用computedProperty?每次?如果我使用{{log}},這是我在頁面中得到的:'''model.posts.isLoaded = undefined,model.posts.isLoading = undefined,model.posts.content.isLoaded = false,model.posts .content.isLoading = undefined,model.posts.content.isLoaded = true'''如何做? 怎麼辦? –
它的'isLoaded',對不起,'isLoading'在'模型'本身並且在這裏不相關。輸出是有道理的。 'isLoaded'是虛假的,直到返回日期,它變成'true'。所以,如果你在'each'的'else'部分,並且'isLoaded'是'true',那麼你就沒有數據。 – Lux
尊敬的@Lux,這是行不通的。 model.posts.isLoaded始終未定義。因此,即使沒有記錄,我也會在加載時出現困難。如何? –