2014-11-07 3 views
3

나는 여기 미쳤다고 느낀다. 나는 꼼짝 않고 바라보고 있었고 명백한 것을 놓치고 있어야합니다.두 줄이 모두 같은 색으로 나타나는 이유는 무엇입니까?

this example on jsbin

내가 곡선 경로 파란색 싶습니다 참조 단어를 기본 직선 경로가 빨간색으로 할 수 있습니다.

나는 항상 스트로크 폭, 뇌졸중을 설정하고 있습니다 것으로 나타났습니다, 및 채우기는 그래서 도우미 메서드

lineColor = (color, node) -> 
    node 
    .attr 'stroke', color 
    .attr 'stroke-width', 2 
    .attr 'fill', 'none' 

을했다 그리고이

#curvy 
lineColor 'blue', svg 
    .append 'path' 
    .attr 'd', line indentations 

같은 경로를 그리고이 같은

#underline 
lineColor 'red', svg 
    .append 'path' 
    .attr 'd', usageLine usageCol 

첫 번째 줄은 파란색이고 두 번째 줄은 빨강이라고 생각 하겠지만 둘 다 빨간색으로 나옵니다. 마지막으로 사용됩니다)!

나는 여기에서 지연된 실행이 없다. 나는 함수 밖의 각 노드에 stroke 명령을두면 작동한다.

무엇이 누락 되었습니까?

편집 :Here's the same thing without the helper function - everything's working great.

+0

@muistooshort 내가 너무 생각 이잖아,하지만 색상 변수가 호출있어 시간에 바인딩합니다. 그것은 단지 자바 스크립트입니다. 나는 확신하지 못한다. 그러나 d3은 append가 호출 될 때 요소를 쓴다고 생각하고 브라우저 최적화를 이용하여 레이아웃을 스 래시하지 않는다. –

답변

3

커피 스크립트에 익숙하지 않다.

나는 일어나는 보이지 않아요

: http://jsbin.com/woxehetobe/2/edit

그것은 당신이 한 모든 것들의 기준을 유지해야하기 때문에 svg에 참조에 대한 속성을 변경하면, 그들 모두를 변경 나에게 의미가를 첨부되어 모든 속성이 파란색으로 변경됩니다.

두 번째 참조가있는 경우 두 가지 색상을 모두 얻을 수 있습니다. 복제 할 수있는 더 나은 방법이 "d3"이라는 것이 확실하지만 그 경험이 많지 않습니다.

근무 예 : http://jsbin.com/woxehetobe/3/edit

+0

당신은 여러 장의 svg를 가지고 그것을 재 작성했고 thg svg에 색을 설정하고있었습니다. 나는 길에 색깔을 세우고있다.[도우미 기능이 없어도 작동합니다!] (http://jsbin.com/raseg/1/) –

+0

이 예제는 원본과 다릅니다. 먼저, 노드의 색상을 변경하고 * then * append를 변경합니다. 두 번째 예제에서는 색상을 추가하고 * 다음 * 변경합니다. 실제로, 제 2의 순서를 변경하여 제 1의 순서와 일치하게하면 다시 이중 빨강이됩니다. 다시 내 대답을 확인합니다. – CWSpear

+0

이런 젠장, 너 말이 맞아. 내 자신의 영리한 coffeescript 들여 쓰기로 망 쳤어. 나는 체인의 결과에'lineColor'를 호출 할 의도였습니다. –

0

그것은 나를 그렇게 여기에 댓글을 추가 할 수 없습니다가 시도 대답 : 나는 문제가 당신이 획 색상을 설정하여 lineColor 함수의 전체 SVG 요소를 전달한다는 생각 전역 적으로, 즉 SVG의 모든 행에 적용됩니다. 각 줄의 SVG에 "g"요소를 추가하고 대신에 lineColor 함수에 전달하십시오. 그게 당신의 문제를 해결해야합니다! 나는 그것이 작동하는 함수 외부 각 노드에 행정 명령을 넣을 경우 코드 예제의 부족 죄송

, 나는 ...

+0

path 요소에 속성을 설정하지 않겠는가? –

+1

나는 이것이 당신이 성취하려고 시도한 것이라고 생각했습니다 : 각 경로가 다른 색으로되어 있어야합니다. 어쨌든 이미 문제를 해결 한 것처럼 보입니다. :-) – srbdev

관련 문제