2013-02-04 1 views
0

로드 할 리소스의 ID를 포함하는 개체가 있고이 리소스를 템플릿 자체에 바인딩하려고합니다. 일반적으로 자원은 다음과 같이 결합 할 수 있습니다 resid는 문자열 리소스의 ID입니다데이터 - win-res 특성을 가진 리소스를 동적으로 바인딩

<div class="description" data-win-res="{textContent:'taxCalDescription'}" ></div> 
<div class="name" data-win-bind="textContent:'TaxCal'" ></div> 

. 그러나 id를 직접적으로 가지는 대신 객체를 가지며, 그 중 하나는 리소스 id입니다. data-win-bind 동안

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> 

tool 개체에 액세스 할 수, 내가 객체를 말해봐, data-win-res는 할 수 없습니다. 'cannot find descriptionResId of undefined'

그렇다면 어떻게 동적 리소스 ID를 템플릿에 바인딩 할 수 있습니까?

답변

0

이 상황에서 리소스 API를 직접 변경해야한다고 생각합니다.

두 가지 방법 중 하나로이 작업을 수행 할 수 있습니다

  1. 을 확인 데이터가 지역화 된 문자열을 제공합니다 : 당신은 당신이 이름을 현지화하고로드 올 때, 당신은 자원과 WinJS.Resources.getString를 호출 할 수 있습니다 ID

  2. WinJS.Binding.converter을 사용하면 들어오는 값에 따라 동적으로로드 할 수 있습니다. 예 :

예 :

<div class="description" 
    data-win-bind="textContent: tool.descriptionResId YourNamespace.loadToolName"> 
</div> 
:

WinJS.Namespace.define("YourNamespace", { 
    loadToolName: WinJS.Binding.converter(function(input) { 
     switch(input) { 
      case "notlocalizedname": 
       return WinJS.Resources.getString("MyID"); 
      default: 
       return "Unknown"; 
     } 
    }), 
}); 

그런 다음 마크 업에, 당신의 바인딩과 같을 것이다