向 WinJS.Binding.converter() 函数发送多个参数 [英] Sending multiple parameters to WinJS.Binding.converter() function
问题描述
有没有办法将多个参数发送到 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屋!