3

関数に複数のパラメーターを送信する方法はありWinJS.Binding.converter()ますか? 次のデータと出力を検討してください。

        { contactName: "Tara Miller",  mainNumber: "555-405-6190", alternateNumber: "555-209-1927" },
        { contactName: "Bryan Bond",                               alternateNumber: "555-574-4270" },
        { contactName: "Jenna Siever", mainNumber: "555-843-8823", alternateNumber: "555-799-5424" },

ここに画像の説明を入力

ここにHTMLがあります。MyData.chooseBestNumberコンバーター関数は、ユーザーの代表電話番号を表示するか、代表番号がない場合は「代表番号なし」という言葉を表示するために使用されます。

<div id="listViewTemplate" data-win-control="WinJS.Binding.Template">
    <div class="contactCard">
        <div data-win-bind="innerText: contactName"></div>
        <div data-win-bind="innerText: mainNumber MyData.chooseBestNumber"></div>
    </div>
</div>

コンバーター関数を定義する JS は次のとおりです。

WinJS.Namespace.define("MyData", {
    chooseBestNumber: WinJS.Binding.converter(function (mainNumber) {
        if (mainNumber) return mainNumber;
        else return "no main number";
    }),
});

以下は、私が最終的にできるようにしたいことです...コンバーター関数に複数のパラメーターを渡して、メイン番号(定義されている場合)、代替番号(フォールバックとして)のいずれかを返すことができるようにします。またはメッセージ (他のすべてが失敗した場合):

WinJS.Namespace.define("MyData", {
    chooseBestNumber: WinJS.Binding.converter(function (mainNumber, alternateNumber) {
        if (mainNumber) return mainNumber;
        else if (alternateNumber) return alternateNumber; 
        else return "no phone numbers";
    }),
});

関数に複数のパラメーターを送信することは可能WinJS.Binding.converter()ですか?

4

1 に答える 1

7

実際に電話番号 div をthisキーワードにバインドするとinnerText、その div のプロパティがモデル オブジェクト全体に効果的にバインドされます。そうすれば、コンバーターでモデル全体に​​アクセスできます。

したがって、更新されたコードは次のようになります。

HTML

<div id="listViewTemplate" data-win-control="WinJS.Binding.Template">
    <div class="contactCard">
        <div data-win-bind="innerText: contactName"></div>
        <div data-win-bind="innerText: this MyData.chooseBestNumber"></div>
    </div>
</div>

JavaScript コンバーター

WinJS.Namespace.define("MyData", {
    chooseBestNumber: WinJS.Binding.converter(function (model) {
        if (model && model.mainNumber) return mainNumber;
        else if (model && model.alternateNumber) return alternateNumber;
        else return "no main number";
    }),
});
于 2013-02-05T19:53:54.667 に答える