2012-07-12 3 views
2

드롭 다운 목록의 변경 이벤트에 대한 알림을 만들려면 pines notify (다소 문제가되지 않습니다.)를 사용하고 있습니다. 서버 측에서는 변경 내용이 데이터베이스에 저장되고 저장이 완료되면 알림을 제거하거나 결과에 따라 다른 작업을 수행하려고합니다.javascript 변수 변수 이름 및 전역 범위 (pinesnotify)

문제는 알림 개체를 나중에 참조 할 수있는 방식으로 만드는 것입니다 (제거하려면).

무엇 알림을 알고 많이 나는 자바 스크립트 코드를 생성 할 수 있습니다 코드 숨김에서

var pnid = 'pn' + $('#mydropdown').attr('id'); 
notifications[pnid] = createNotification(); 

처럼, 그것을 앞에 추가 'PN', 드롭 다운리스트의 ID를 획득하고 변수 이름으로 것을 사용하는 것이 나의 의도 솔루션 개체가 호출됩니다. 그러나 나는 '알림'개체로 고민하고있다. 나는이 [알림], 창 [알림] 등을 아무 소용이없는 (예 : 나중에이 개체와 상호 작용할 수 없는지) 시도했다. 그와 같은 함수 밖에서 그 객체를 만들고 있어요

var notifications = {}; 

완전히 잘못된 방법입니까?

+0

'notifications '가 전역으로 선언되면 간단히'notifications'로 참조 할 수 있습니다.'window.notifications' 또는 다른 변형을 말할 필요가 없습니다. ('window [notifications]'는 그 속성 이름이'notifications'가 평가하는 것과 동일한'window' 객체의 속성을 찾기 때문에 작동하지 않습니다.) – nnnnnn

+0

감사합니다. @nnnnnn - 사과이 주석을 발견하지 못했습니다. 여기에 - 당신이 나를 위해 머리에 못을 박은 것을 확신합니다 :) –

답변

2

notifications 개체에 도달하기 전에이 줄을 사용할 수 있습니다.

window.notifications = window.notifications || {}; 

이는 정의되지 않은 경우 개체를 만드는 데 도움이되며, 또한 이미 존재하는 경우를 오버라이드 (override)에서 당신을 방지 할 수 있습니다.

참고 :이 개체를 전역 변수로 사용해야한다고 가정합니다.

+0

+1, 영리한! 그러나 이전에 선언 된 변수를 재정의 (override)하는 것에 문제가 있습니까? – Adi

+0

OP와 같은 어딘가에 함수 밖에서 선언 할 필요는 없습니다. 이 행이 두 번 이상 작동하면 이미 존재하는지 확인해야합니다. –

+0

제안 된 솔루션 주셔서 감사합니다 .. 그러나 나는 코드에 대한 이유가 확실하지 않습니다. 아마도 이것이 아드 난이 제안한 것입니다. 한 번 선언하면 페이지의 여러 영역에서 오브젝트를 참조/조작하고 싶습니다. –