1

Enyo (WebOS 3.0) で 1 つの VirtualRepeater を使用しています。

{kind: enyo.VirtualRepeater, name: "eventList", onSetupRow: "setupRowWithEvent", onclick: "doListTap", components: [
   {kind: enyo.Item, name:"eventItem", layoutKind: enyo.HFlexLayout, tapHighlight: true, components: [
       /* components of every row: inside a Enyo.Item */       
   ]} 
]}                                 
/* more code */
setupRowWithEvent: function(inSender, inIndex) {
     if (somethingIsTrue) {

         return true;    
     }
 }

私がやりたいことは次のとおりです。

  • 何かが真の場合、行をレンダリングします
  • そうでない場合は何も表示しない 問題は、何も表示されずに空の行が表示されることです。コンテンツのある行と空の行が表示されますが、行が必要ありません。false を返すことはできません。そうしないと、VirtualRepeater が行のレンダリングを停止します。
4

1 に答える 1

0

私が見つけた解決策は簡単です:

{kind: enyo.VirtualRepeater, name: "eventList", onSetupRow: "setupRowWithEvent", onclick: "doListTap", components: [
    {kind: enyo.Item, name:"eventItem", layoutKind: enyo.HFlexLayout, tapHighlight: true, components: [
        /* components of every row: inside a Enyo.Item */       
    ]} 
]}                                 
/* more code */
setupRowWithEvent: function(inSender, inIndex) {
  if (somethingIsTrue) {
      // code to update every row 

  } else {  // we don't want this row to show
      this.$.eventItem.setShowing(false);
  } 
 return true; // if you don't return true, the virtual Repeater stops fetching rows
}
于 2011-08-17T11:45:19.517 に答える