2012-06-05 4 views
0

이 코드는 다음과 같습니다.자바 스크립트 키 i18n

var myI18n; // json : "{"close":"بستن","locationInformation":"مشخصات جغرافیایی","yes":"بله","no":"خیر"}" 

그리고 나는 이것과 같이 사용하고 싶습니다.

$.modal({ 
    buttons: { 
     myI18n.close: function(win) { 

     } 
    } 
}); 

하지만 구문 오류가 있습니다. 이 메소드 문자열도 변경되지 않습니다.

var aaa = myI18n.close; 
$.modal({ 
    buttons: { 
     aaa: function(win) { 

     } 
    } 
}); 
+0

게다가,'myI18n.close' 잘못된 구문입니다

var obj = { buttons: {} }; obj.buttons[myI18n.close] = function() {...}; $.modal(obj); 

또는, 모듈 패턴을 사용할 수 있습니다. –

답변

2

객체에 동적 이름을 가진 속성을 할당 할 수있는 유일한 방법은 당신이 당신을 만들어야합니다, 그래서 당신은 문자 객체의 키 이름의 변수를 참조 할 수 없습니다 배열 구문을

var myButtons = {}; 
myButtons[myi18n.close] = ... 
+0

코드 블록을 편집하기 전에 upvote를 어떻게 사용했는지 좋아해요. : P –

+0

코드가 너무 길어서 전화에서 게시하기;) –

2

을 사용하는 것입니다 먼저 [] 표기법을 사용하여 채우고 $.modal에서 사용하십시오.

buttons = {} 

buttons[myI18n.close] = function(win) { 
    // .... 
} 

$.modal({ 
    buttons: buttons 
}); 
1

변수 리터럴에는 직접 변수 리터럴을 사용할 수 없습니다. 배열 액세스 구문 (obj[keyname] = value)을 사용하려면 코드를 분리해야합니다.

$.modal({ 
    buttons: (function() { 
     var btns = {}; 
     btns[myI18n.close] = function() {...}; 
     return btns; 
    }()) 
}); 
관련 문제