2012-03-16 3 views
1

Я ищу шаблон решения/дизайн JS, который позволяет многократно вызывать функцию C.Test.init() с привязкой события загрузки окна в функции init(). К сожалению, я не могу заставить это работать. Кто-нибудь может мне с этим помочь?Как реализовать шаблон проектирования JavaScript

var C = {}; 

    C.Test = (function(C) 
    { 
     var me = {}; 

     me.init = function(config) 
     { 
      me._config = config; 
      $(window).bind('load.' + config.name, me, me.sayHello); 
     } 

     me.sayHello = function(e) 
     { 
      // this doesn't work: 
      document.write('HELLO ' + me._config.name + '<br>'); 

      // this doesn't work either: 
      document.write('SALVE ' + e.data._config.name + '<br>'); 
     } 

     return { 
      init : me.init 
     } 

    })(C); 

    C.Test.init({ 
     name: 'John' 
    }); 

    C.Test.init({ 
     name: 'Kate' 
    }); 

Вот ссылка JS Fiddle: http://jsfiddle.net/4Ss8L/

+1

Почему вы отметили это как jQuery? Вы хотите решение jQuery? – deed02392

+0

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

ответ

2

кажется как вопрос закрытия для меня

http://jsfiddle.net/4Ss8L/2/

проверить это.

+0

, и если вы хотите, чтобы данные были добавлены в event.data, тогда вам нужно будет сделать что-то вроде этого '$ (window) .bind ('load.' + Config.name, function (c) {return function (e) {e.data = c; me.sayHello.call (this, e);}} (config)); ' Причина, заключающаяся в том, что u использует однотонный элемент или, скорее, объект для доступа к данным, и к тому времени, загрузка окна запускается с изменением _config и отменой старой ссылки данных. вот ссылка на скрипку http://jsfiddle.net/4Ss8L/3/ – Sushil

+0

отлично. спасибо @ Сушил! еще один вопрос: действительно ли нужно «возвращение»? он также работает без него. –

+0

@santacruz нет, в вашем сценарии его не нужно, но в некоторых случаях это так, так что это отчасти зависит от случая. Но если вы удалите оператор return, вы не получите объект события. проверьте нашу ссылку на скрипку, которую я дал u в своем предыдущем комментарии. – Sushil

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