Разработка 'плагинов' - Как передать объектный метод в JSON? - PullRequest
0 голосов
/ 23 февраля 2011

Я не уверен, возможно ли это, или, может быть, более безумно хороший дизайн.Мы ценим обратную связь.

У нас есть интерфейс, в который мы добавляем функциональные элементы через «плагины».Дизайн плагина представляет собой объект javascript с некоторыми данными и некоторыми методами, как показано ниже:

function FeedbackPlugin(){
  return {
    name: "Feedback",
    help: "Provide feedback on any element of the site",
    ...    
    showForm : function(_feedbackType) {
      ...
    },
    ...
    messageCallbacks: [{callbackKey:"ProvideFeedback",callbackHandler:showForm}]       
  };
}

Каркас загружает каждый плагин и затем перебирает messageCallbacks , чтобы связать кометные события с методами плагина.

К сожалению, приведенный выше код не работает.Метод плагина showForm находится вне области действия, когда инфраструктура пытается его зарегистрировать.Я думаю, что нам, возможно, понадобится передать указатель на метод showForm существующего экземпляра плагина ...

  • Есть ли способ в javascript как-то сделать этот метод статичным?
  • Должен ли метод просто жить вне плагина для удобства?

Спасибо.

1 Ответ

0 голосов
/ 23 февраля 2011

Если каждый загружаемый плагин является статическим (не содержит изменяющихся данных), тогда загружайте их как сценарии вместо JSON. Если есть данные, которые являются динамическими, то отделите динамические данные от статических функций и отправьте только данные в виде JSON.

...