我有一个对象,其中包含要加载的资源的id,并希望将其绑定在模板本身中。 通常资源可以这样绑定:
<div class="description" data-win-res="{textContent:'taxCalDescription'}" ></div>
<div class="name" data-win-bind="textContent:'TaxCal'" ></div>
其中resid
是字符串资源的id。但是没有直接拥有id,我有一个对象,其中一个元素是资源ID。说我有一个对象,
var tool = {
name: "TaxCal",
descriptionResId : "taxCalDescription"
}
我尝试像这样绑定它,
<div class="description" data-win-res="{textContent: tool.descriptionResId}" ></div>
<div class="name" data-win-bind="textContent:tool.name" ></div>
虽然data-win-bind
可以访问tool
对象,但data-win-res
却无法访问'cannot find descriptionResId of undefined'
。它会引发错误,指出{{1}}
那么,如何将动态资源ID绑定到模板?
答案 0 :(得分:0)
我相信在这种情况下,您需要直接更改资源API的使用。
您可以通过以下两种方式之一完成此操作:
让您的数据提供本地化字符串:当您加载本地化名称时,可以使用资源ID
<来调用WinJS.Resources.getString
/ LI>
使用WinJS.Binding.converter
根据传入值动态加载它。 E.g。
示例:
WinJS.Namespace.define("YourNamespace", {
loadToolName: WinJS.Binding.converter(function(input) {
switch(input) {
case "notlocalizedname":
return WinJS.Resources.getString("MyID");
default:
return "Unknown";
}
}),
});
然后,在你的标记中,你的绑定看起来像:
<div class="description"
data-win-bind="textContent: tool.descriptionResId YourNamespace.loadToolName">
</div>