0

我有一个对象,其中包含要加载的资源的 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'

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

4

1 回答 1

0

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

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

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

  2. 用于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>
于 2013-02-04T16:37:42.980 回答