1

データの取得中にローダーのテキストを表示し、データの取得中に別のテキストを表示したいのですが、結果がありません。

これは私の現在のテンプレートです:

<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>
4

1 に答える 1

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>

したがって、コントローラーは、タイムアウト アプローチを使用して読み込みフラグをリセットする次のようになります。

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")
});
于 2013-03-07T14:39:45.253 に答える