windows-8 - 向 WinJS.Binding.converter() 函数发送多个参数

标签 windows-8 winjs

是否有一种方法可以向 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" },

enter image description here

这是 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() 函数发送多个参数?

最佳答案

您实际上可以将电话号码 div 绑定(bind)到 this 关键字,这将有效将该 div 的 innerText 属性绑定(bind)到整个模型对象。这样,在您的转换器中,您就可以访问整个模型。

因此您更新后的代码将如下所示:

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";
    }),
});

关于windows-8 - 向 WinJS.Binding.converter() 函数发送多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14713927/

相关文章:

c# - 文件流到字节 [] : Windows XP vs Windows 8

c# - 在 C# winmd 中使用 JSON

windows-8 - 安装 Windows 应用商店应用程序后运行脚本

c - mariadb c api windows undefined reference to

javascript - 如何使用javascript将图像上传到azure blob存储

javascript - 如何在 WinJS iframe 中加载远程内容同时避免 SEC7117 错误?

javascript - 如何从 Windows.Storage.StorageFile WinJS 加载 blob

wpf - 标签不是有效的 XAML 元素?

java - Oracle 会创建一组在 Windows 8 上看起来原生的 UI 控件吗?

c# - 适用于 Windows 8 的图像编辑库