2013-04-20 4 views
0

Я пытаюсь передать paramater (gmap_settings) функции (инициализации), которая находится во включенном внешнем js-файле. Мой файл PHP выглядит следующим образом:Определение переменной jquery в функции, которая выходит за рамки

<?php 
$setting = array(
    'zoom' => 8 
); 

$json = json_encode($setting); 
?> 

<script type="text/javascript"> 
//<![CDATA[ 

jQuery(document).ready(function($) { 
    var gmap_settings = $.parseJSON ('<?php echo $json; ?>'); 
--> google.maps.event.addDomListener(window, 'load', $(document).initialize(gmap_settings)); 
}); 

//]]> 
</script> 

Для простоты, позволяет говорить о том, что внешний JS файл выглядит следующим образом:

(function($) { 
    var initialize = function(data) { alert(data); }; 
})(jQuery); 

Независимо от того, что я стараюсь, я не могу понять, как передать gmap_settings в initialize(). Я пробовал функцию initialize() во внешнем файле:

$(document).initialize.gmap_settings 
$(document).initialize({gmap_settings}) 
initialize(gmap_settings) 

Я не понимаю, что я пропускаю.

+1

No. Параметр ' var initialize' является * локальной переменной *. Это означает, что вы * не можете * получить доступ к нему извне. – Bergi

+0

Вместо того, чтобы пытаться проанализировать неэкранированную эхо-строку JSON, просто используйте 'var gmap_settings = ; ' – Bergi

+0

' $ (document) .initialize' похоже, что вы пытаетесь [написать плагин] (http://docs.jquery.com/Plugins/Authoring) – user2264587

ответ

1

Почему вы думаете, что $(document).initialize будет работать?

Вы могли бы реализовать шаблон модуля в ваш внешний Javascript файл и возвращает объект и вызвать инициализации этого объекта

var YourModule = (function($) { 
    return { 
     initialize: function(data) { alert(data)} 
    }; 
})(jQuery); 

Теперь у вас есть переменная, которую можно использовать

var newModule = Object.create(YourModule); 
newModule.initialize('This will be alerted') 
+0

Это сработало. Это тот же формат, что плагин будет написан за минусом $ .fn (прототип)? Идея прототипов теряется во мне, несмотря на то, что я могу заставить его работать на самом низком уровне понимания. – brandonhowlett

+0

@brandonhowlett idk javascript по-прежнему новенький для меня. Похоже, вас интересует плагин jquery на основе '$ .fn.'. Есть много сообщений в блогах о лучших способах написания плагина jquery. – dm03514

+1

Примерно десять лет назад я был разработчиком PHP, и теперь я обнаружил, что я участвую в jquery вместе для личного проекта, это смешно. Спасибо за помощь! – brandonhowlett

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