2

HTML5/Javascript で Windows 8 アプリを開発しています。DIV のスタックを使用してコンテンツを表示するカスタム コントロールを作成しました。各 DIV は を使用してレンダリングされますWinJS.Binding.Template。セットアップは、次の質問の答えに近いです: WinJS.UI.ListView はリスト項目のコンテンツをカスタマイズしますか? .

バインディング データは次のようになります。

[
    {
        "title": "title name",
        "allow_action": false
        "action_type": "go"
    },
    ...
]

そして、私のテンプレートは次のようなものです:

<div id="entry" data-win-control="WinJS.Binding.Template">
    <div data-win-bind="textContent: title">
    </div>
    <a class="action">Action</a>
</div>

バインドしたら、次のことを行います。

  1. との値classNamea.action基づいて を変更します。allow_actionaction_type
  2. バインディングデータの内容に基づいて、バインディング時にイベント ( addEventListener) を添付します。a.actionこれにはallow_actionaction_typeおよびその他の値が含まれます。

基本的に、要素を使用してバインド前またはバインド後のコールバック関数を持ち、データを引数としてバインドしたいと考えています。コンバーターでは他のフィールドにアクセスできないため、これはコンバーターでは可能ではないようです。

その間、私は後でDOMを使用してこれらのものを手動で処理していますrender。利用可能なより良いオプションがあるかどうか疑問に思っています。ありがとうございました。

アップデート

コメントで @GotDibbs と @RSW が示唆しているように、Sending multiple parameters to WinJS.Binding.converter() functionの解決策を使用して問題 #1 を解決することができました。#2がまだ可能かどうか疑問に思っていますか?

4

1 に答える 1

3

コメントに記載されている前の回答と同様に、目的の要素の event と className プロパティをモデルにバインドすることで、探しているものを達成できるはずです。したがって、クリック イベントをバインドすると仮定すると、アンカー タグは次のようになります。

...
<a data-win-bind="className: this Converters.getItemClassName; onclick: this Converters.getItemClickHandler">Action</a>
...
于 2013-02-19T04:57:35.603 に答える