向 WinJS.Binding.converter() 函数发送多个参数 [英] Sending multiple parameters to WinJS.Binding.converter() function

查看:20
本文介绍了向 WinJS.Binding.converter() 函数发送多个参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法将多个参数发送到 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 class="contactCard"><div data-win-bind="innerText: contactName"></div><div data-win-bind="innerText: mainNumber MyData.chooseBestNumber"></div>

这里是定义转换器函数的JS:

WinJS.Namespace.define("MyData", {选择最佳编号:WinJS.Binding.converter(function (mainNumber) {if (mainNumber) 返回 mainNumber;否则返回无主号";}),});

下面是我最终希望能够做的事情……将多个参数传递给转换器函数,以便我可以返回主编号(如果已定义)、备用编号(作为回退),或一条消息(如果一切都失败了):

WinJS.Namespace.define("MyData", {选择BestNumber:WinJS.Binding.converter(函数(mainNumber,alternateNumber){if (mainNumber) 返回 mainNumber;else if (alternateNumber) 返回alternateNumber;否则返回没有电话号码";}),});

是否可以向 WinJS.Binding.converter() 函数发送多个参数?

解决方案

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

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

HTML

<div class="contactCard"><div data-win-bind="innerText: contactName"></div><div data-win-bind="innerText: this MyData.chooseBestNumber"></div>

JavaScript 转换器

WinJS.Namespace.define("MyData", {选择BestNumber:WinJS.Binding.converter(函数(模型){if (model && model.mainNumber) return mainNumber;else if (model && model.alternateNumber) 返回alternateNumber;否则返回无主号";}),});

Is there a way to send more than one parameter to a WinJS.Binding.converter() function? Consider the following data and output:

        { 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" },

Here is the HTML. The MyData.chooseBestNumber converter function is used to display either a person's main phone number or the words "no main number" if they don't have a main number:

<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>

Here is the JS defining the converter function:

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

Below is what I'd ultimately like to be able to do...passing more than one parameter into the converter function so that I can return either the main number (if it is defined), the alternate number (as a fallback), or a message (if all else fails):

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

Is it possible to send more than one parameter to a WinJS.Binding.converter() function?

解决方案

You can actually bind your phone number div to the this keyword which will effectively bind the innerText property of that div to the entire model object. That way in your converter, you'd have access to the whole model.

So your updated code would look like this:

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 Converter

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

这篇关于向 WinJS.Binding.converter() 函数发送多个参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
其他开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆