有没有办法向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" },
Run Code Online (Sandbox Code Playgroud)

这是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>
Run Code Online (Sandbox Code Playgroud)
这是定义转换器函数的JS:
WinJS.Namespace.define("MyData", {
chooseBestNumber: WinJS.Binding.converter(function (mainNumber) {
if (mainNumber) return mainNumber;
else return "no main number";
}),
});
Run Code Online (Sandbox Code Playgroud)
下面是我最终能够做到的...将多个参数传递给转换器函数,以便我可以返回主号码(如果已定义),备用号码(作为后备),或消息(如果所有其他方法都失败):
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";
}),
});
Run Code Online (Sandbox Code Playgroud)
是否可以向WinJS.Binding.converter()函数发送多个参数?
您实际上可以将您的电话号码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>
Run Code Online (Sandbox Code Playgroud)
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";
}),
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1566 次 |
| 最近记录: |