Winapi 使用数据win res属性动态绑定资源

Winapi 使用数据win res属性动态绑定资源,winapi,windows-8,windows-store-apps,winjs,Winapi,Windows 8,Windows Store Apps,Winjs,我有一个对象,其中包含要加载的资源的id,并希望将其绑定到模板本身中。 通常资源可以这样绑定: <div class="description" data-win-res="{textContent:'taxCalDescription'}" ></div> <div class="name" data-win-bind="textContent:'TaxCal'" ></div> 我试着这样装订 <div class="descripti

我有一个对象,其中包含要加载的资源的id,并希望将其绑定到模板本身中。 通常资源可以这样绑定:

<div class="description" data-win-res="{textContent:'taxCalDescription'}" ></div>
<div class="name" data-win-bind="textContent:'TaxCal'" ></div>
我试着这样装订

<div class="description" data-win-res="{textContent: tool.descriptionResId}" ></div>
<div class="name" data-win-bind="textContent:tool.name" ></div>

数据win bind
可以访问
工具
对象时,
数据win res
不能。它抛出一个错误,指出
“找不到未定义的descriptionResId”


那么,如何将动态资源id绑定到模板?

我认为在这种情况下,您需要直接更改对资源API的使用

您可以通过以下两种方式之一执行此操作:

  • 让您的数据提供本地化字符串:当您加载您的本地化名称时,您可以使用资源ID调用
    WinJS.Resources.getString

  • 使用
    WinJS.Binding.converter
    根据传入值动态加载它。例如

  • 例如:

    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>
    
    
    
    <div class="description"
         data-win-bind="textContent: tool.descriptionResId YourNamespace.loadToolName">
    </div>