2012-01-30 4 views
1

私はいくつかのIDを含むAjaxSelectを使用しています。 IDを選択することにより、このIDへの追加情報がスニペットによって生成される所定のテーブルに表示されるはずです。今、私は自分のリストをリフレッシュするための最良のソリューションがどれかを知りたいですか?リフト:リフレッシュ/リロードスニペット

HTML:

<table> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>Type</th> 
     </tr> 
    </thead> 

    <tbody> 
     <tr class="lift:MainScreen.cars"> 
      <td><car:name /></td> 
      <td><car:type /></td> 
     </tr> 
    </tbody> 
</table> 

SCALA:

def doSelect(msg: NodeSeq) = { 
    SHtml.ajaxSelect(cars.map(i => (i.no.toString, i.no.toString + ". Car")), 
    Empty, { 
     selectedCar => 
     controller.chooseCar(selectedCar.toInt) 
     // RELOAD TABLE 
    }) 
} 

def cars(node: NodeSeq): NodeSeq = { 
    val cars = controller.chosenCarFamily.cars 
    cars match { 
    case null => Text("There is no items in db") 
    case game => game.flatMap(i => 
     bind("car", node, 
      "name" -> car.name, 
      "type" -> car.type)) 
    } 
} 
+0

は、それは '私ではありません'car.name'ではなく' .name'ですか? –

答えて

3

あなたはValueCellWiringUIを使用する必要があります。非常に良い例は、simple_wiringinvoice_wiringで見つけることができます。

WiringUIを使用する場合、値Cellcellが更新されるたびに、WiringUI.apply(cell)にリンクされたコンテンツが更新されます。だからトリックをする必要があります。ここで

は、特定の場合の例である:

HTML:あなた

SCALAとして 同じ:関数車で

class MainScreen{ 
    def doSelect(msg: NodeSeq) // same as yours 

    def cars = WiringUI.apply(controller.chosenCarFamily)(displayResult) 

    def displayResult(carFamily:CarFamily)(node: NodeSeq) ={ 
    carFamily.cars match { 
     case null => Text("There is no items in db") 
     case game => game.flatMap(i => 
     bind("car", node, 
      "name" -> i.name, 
      "type" -> i.type)) 
    } 
    } 
} 

object Controller{ 
    val selectedCar = ValueCell(1) 
    def chooseCar = sectectedCar.set  
    val chosenCarFamily = selectedCar.lift(car:Int => //Stuff to output the family) 
} 
+0

私のコードは、主に "displayResult"関数で完璧ではないことを知っています。だから、あなたの提案のコメントがある場合、または私の答えを編集する場合。 –

+0

ちょっとクリス、返信していただきありがとうございますと適用方法では動作しますが、実際に私はこのソリューションが私の問題に最もマッチしているとは思わない。私は 'controller.chooseCar(selectedCar.toInt)'に選択したIDをコミットするので、IDをモデルに保存し、 'controller.chosenCar'メソッドを使用して選択したCarを取得したいので、以下の2つの変数を使用します同じIDは不必要です。 –

+0

たぶんあなたはcontrollerにvalueCellを置くことができますか?私はあなたのプロジェクトの全体像を持っていませんが、基本的に、どこかでvalueCellを取得するとすぐに動作します。 –