用于加载数据和零结果的不同模板

时间:2013-03-07 12:54:16

标签: ember.js handlebars.js

我想在检索数据时显示加载程序文本,在检索数据时显示另一个文本,但结果为零。

这是我目前的模板:

<h3>Items</h3>
<ul>
  {{#each item in controllers.items}}
    <li>{{ title }}</li>
  {{else}}
    <li>No items found</li>
  {{/each}}
</ul>

但现在文本:No items found也会在检索数据时显示。

Emberjs可以使用以下模板吗?

<h3>Items</h3>
<ul>
  {{#each item in controllers.items}}
    <li>{{ title }}</li>
  {{else if loading}}
    <li>Loading....</li>
  {{else}}
    <li>No items found</li>
  {{/each}}
</ul>

1 个答案:

答案 0 :(得分:1)

这不太可能是你的方式,但我这样做,我正在为我的控制器添加一个加载标志,以便我可以在模板中访问它:

<h3>Items</h3>
<ul>
  {{#if loading}} 
     I am loading your items!
  {{else}}
    {{#each item in controllers.items}}
      <li>{{ title }}</li>
    {{else}}
      <li>No items found</li>
    {{/each}}
  {{/if}}
</ul>

所以你的Controller看起来像这样使用超时方法来重置加载标志:

App.YourController = Ember.ArrayController({
  loading : false, // set this property, when you are loading new content into the controller
  resetLoadingObserver : function(){
     // this gets triggered on each modification to the array
     // we want to reset the loading property, once all new items have been added
     var that = this;
     $.doTimeout("resetLoadingFlag", 100, function(){
       that.set("loading", false)
     });
  }.observes("content.@each")
});