Javascript обратный вызов и Google Maps API вопрос - PullRequest
1 голос
/ 01 июня 2010

Я использую Google Maps API v3 и у меня есть массив массивов объектов:

MVCArray.<MVCArray.<LatLng>>

Я хочу повторить это. Я вижу, что MVCArray имеет метод forEach, который использует обратный вызов, но я не знаю, как это использовать (я не сделал много JS). API определяет этот метод следующим образом:

forEach(callback:function(*, number)))

Может кто-нибудь показать мне пример использования этого MVCArray для MVCArrays (мне нужно вытащить каждый объект LatLng)?

Ответы [ 2 ]

2 голосов
/ 01 июня 2010

В JavaScript вы можете передавать функции так же, как вы можете передавать любые другие данные. Есть два обычных подхода к этому.

Во-первых, вы можете определить функцию обычным способом и дать ей имя:

function myHappyFunction(item, index) {
   // Do things using the passed item and index
}
...forEach(myHappyFunction);

Здесь вы передаете созданную вами функцию в функцию forEach. myHappyFunction теперь будет вызываться несколько раз, каждый раз передавая другой элемент из списка.

В качестве альтернативы, вы можете избежать необходимости придумывать умное имя функции, просто передав функцию НЕПОСРЕДСТВЕННО, например так:

...forEach(function(item, index) {
    // Do things using the passed item and index
});

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

1 голос
/ 28 февраля 2011

просто чтобы уточнить ответ @ VoteyDisciple, вот пример из реальной жизни

aMarker - это объект MVCArray, который по умолчанию имеет перетаскиваемое значение false. поэтому, когда пользователь переключается на «true», мой код вызывает это:

aMarker.forEach(function(item, index) {
    aMarker[index].setDraggable(true);
});

и делает их перетаскиваемыми.

...