2014-12-22 4 views
1

Я не совсем понимаю, как использовать цепочку методов с функциями. Ниже приведены некоторые случаиD3.js: Передача аргументов через цепочку методов

Ожидаемое Case

var dataset = [ 5, 10]; 

function count(d) { 
    return "I can count up to " + d ; 
} 
      d3.select("body").selectAll("p") 
       .data(dataset) 
       .enter() 
       .append("p") 
       .text(count); 

Выход

I can count up to 5 

I can count up to 10 

То, что я не получаю этот выход из модифицированной функции подсчета

function count(d, a) { 
    return "I can count up to " + d + a ; 
} 

Выходной

I can count up to 50 

I can count up to 101 

Прочтите этот пост, но я все еще что-то пропущу. Должен ли я просто перечитать его?

How are input parameters filled in javascript method chains?

+2

По-видимому, индекс элемента передается как второй параметр , Итак, первый раз, когда вы получите 50, что на самом деле «5» + «0», а затем 101 - «10» + «1», –

ответ

0

При вызове функции в d3.js.text его подпись:

.text(function(datum, index){ 

}); 

Итак:

return "I can count up to " + d + a ; 

означает:

return string + datum + index. 

Наконец, с Javascript, когда вы начинаете со строки сначала, все принудительно вставляется в строку, так что d + a объединяет 5 и 0, а затем 10 и 1.

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