2015-06-05 2 views
0

Я пытаюсь очистить свой код путем замены имен, который является новым для меня. У меня очень простое приложение, которое делает запрос Ajax, а затем загружает материал с ответом. Код начинает казаться беспорядочным, поэтому я хочу, чтобы он простенил его, а затем вызовет функцию пространства имен, которая принимает ответ AJAX в качестве аргумента. 1. Можно ли и должно ли это быть сделано? 2. Если да, то как, вот кодПередача «ответа» или «данных» Возврат AJAX в функцию пространства имен

var GETDATA = { 
 
\t myAlert: "this variable is the property of a namespace", 
 
    // response?: ???? do i need to declare response var here somehow 
 
\t 
 
\t myNSFunction: function() { 
 
\t \t alert(this.myAlert) 
 
\t } 
 

 
\t //theFunctionIWant: function (response??) { 
 
\t \t // takes the response from ajax request 
 
\t \t // does some stuff to it. 
 
\t //} 
 
}; 
 

 

 
$(document).ready(function() { 
 

 
    $("#my-form").submit(function(event) { 
 
    
 
    $.ajax({ 
 
    \t type: 'GET', 
 
    \t url: "http://localhost:3000/DATA" 
 
    \t }) 
 
    \t .done(function(response) { \t 
 
    
 
     //GETDATA.theFunctionIWant(); 
 
    
 
    }); 
 
         
 
         
 
});

Любая помощь очень ценится.

ответ

0
var GETDATA = { 
    myAlert: "this variable is the property of a namespace", 
    myNSFunction: function() { 
     alert(this.myAlert) 
    }, 
    theFunctionIWant: function (response) { 
     console.log(response); 
    } 
}; 


$(document).ready(function() { 
    $("#my-form").submit(function (event) { 
     $.ajax({ 
      type: 'GET', 
      url: "http://localhost:3000/DATA" 
     }) 
     .done(function (response) { 
      GETDATA.theFunctionIWant(response); 
     } 
    });     
}); 


Если вы это делаете?

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

У вас есть группа функций обработки ответа, которые схожи? Вы пытаетесь создать хранилище полученных ответов и связанных функций, которые действуют на ответы? Вы беспокоитесь о разрешении конфликтов, которые требуют разрешения пространства имен? и т. д.


Лучший подход: рассмотрите закрытие для частного пространства.

var RequestProcessors = (function() { 
    var thisIsPrivate = "Ok", 
     thisIsPrivateToo = "Fine"; 

    return { 
     processorOne: function(resp, arg) { /* logic here */ }, 
     processorTwo: function(resp, arg) { /* logic here */ } 
    } 
})(); 
+0

Поскольку это первый вызов AJAX в этом приложении, возможно, нет большой пользы. Я могу продолжить и добавить в это приложение больше возможностей, может еще 20 вызовов ajax. Если я это сделаю, я бы не стал простаивать каждый из них? –

+0

Приложение предназначено для того, чтобы быть политическим искателем фактов, поэтому есть панель инструментов с политическими партиями, а затем множество разделов с различными областями их политик, в каждом разделе это позволит пользователю ссылаться и сравнивать полисы. Ex GET последние 5 лет данные о занятости, затем сравниваются с другой стороной. По мере того, как он вырастет, вам понадобится nunber запроса ajax. –

+0

@IainWatt Как я уже сказал, в этом масштабе это может иметь смысл, в зависимости от того, как вы видите свою группировку и связанность с обработчиками обработки запросов. Кроме того, считается полезным использовать закрытие, чтобы скрыть область вашего пространства имен. См. Дополнительный пример. – BluePill