2015-02-18 7 views
0

У меня есть этот фрагмент до сих пор:Как я могу форматировать строку ресурса?

resetSettings: function (type, showConfirm, OnImageLoad) { 
     if (showConfirm) { 
      var msg = ""; 
      Localization.GetBrowserLocalResource("ConfirmMsg", function (key, value) { 
       msg = value; 
      }); 

Но я хочу, чтобы отформатировать его с чем-то вроде этого, где я прохожу в типе для форматирования строки:

Localization.stringFormat(getString(Localization.GetBrowserLocalResource("ConfirmMsg", type))); 

Но мне нужно форматировать строка с функцией (ключ, значение) в этом методе. Как мне это сделать?

EDIT:

Определение GetBrowserLocalResource:

var browserLocalResources = {}; 

    // callback = callback(key,value) 
    GetBrowserLocalResource: function (key, callback) { 

     var val = "--no--resource"; 

     if (browserLocalResources != null) { 

      if (browserLocalResources.hasOwnProperty(key)) { 
       val = browserLocalResources[key]; 
       callback(key, val); 
      } else { 
       Localization.GetResourceFromServer(key, callback); 
      } 

     } else { 
      AjaxLog.WriteLog("error: GetBrowserLocalResource", "browserLocalResources == null"); 
     } 

     return (val); 
    }, 

Как бы я использовать StringFormat?

StringFormat является:

stringFormat: function() { 

      var s = arguments[0]; 
      for (var i = 0; i < arguments.length - 1; i++) {  
       var reg = new RegExp("\\{" + i + "\\}", "gm");    
       s = s.replace(reg, arguments[i + 1]); 
      } 

      return s; 
     } 

Нечто подобное ?:

if (showConfirm) { 
       var msg = ""; 
       stringFormat(Localization.GetBrowserLocalResource("ConfirmMsg"), type, function (key, value) { 
        msg = value; 
       }); 
+0

Где 'Localization.GetBrowserLocalResource' определено? –

+0

См. Редактирование. Спасибо – Euridice01

ответ

1

Это звучит, как вы хотите, чтобы быть в состоянии назвать Localization.GetBrowserLocalResource с дополнительным вторым параметром. Вам придется изменить эту функцию. Это должно вам начать работу по определению необязательный параметр для метода:

// type is optional 
// callback = callback(key,value) 
GetBrowserLocalResource: function (key, type, callback) { 

    if (typeof callback === 'undefined' && typeof type === 'function') { 
     callback = type; 
     type = void 0; 
    } 

    // ... 
}, 

(конечно, если type не будет обязательным, но всегда будет необходимо, то просто добавьте параметр и не добавить проверку типов)

После того, как вы сделали это изменение, то вы можете вызвать метод как это:

resetSettings: function (type, showConfirm, OnImageLoad) { 
    if (showConfirm) { 
     var msg = ""; 
     Localization.GetBrowserLocalResource("ConfirmMsg", type, function (key, value) { 
      msg = Localization.stringFormat(GlobalObjects.getString(value); 
     }); 
+0

Хорошо, но как я буду использовать stringFormat? См. Править. – Euridice01

+0

Отредактирован ответ. –

+0

тип должен быть факультативным в моем случае. Он не показывает сформированную строку ... он все еще имеет местозаполнитель в строке ({0}), но я запустил отладчик. – Euridice01

Смежные вопросы