2013-02-20 2 views
2

나는 클라이언트가 마우스 오른쪽 버튼 클릭 메뉴에서 고집하는 프로젝트를 가지고있다. 문제는 오른쪽 클릭 메뉴의 옵션에서 호출 된 함수가 모델 정보에 액세스 할 수 있어야한다는 것입니다. 다음은 바이올린 예 http://jsfiddle.net/7yCwW/1/$scope.junkDataSet = [{index:foo, color:bar}]입니다. 기본적으로 필요한 것은 색상을 표시하는 옵션이있는 컨텍스트 메뉴입니다. "쇼 색상"을 클릭하면 마우스 오른쪽 버튼으로 클릭 한 항목의 색상을 알리는 경고가 나타납니다.각도 js 중계기의 상황에 맞는 메뉴

+0

어떻게 컨텍스트 메뉴를 표시 할 계획입니까? 어떤 라이브러리/코드를 사용할 계획입니까? 그것을 당신의 바이올린에 포함시킬 수 있습니까? –

답변

2

원래 대답

당신은 요소 내부에 고유의 속성과 관련 데이터를 바인딩하고 수신 기능이 el.getAttribute ('mycolor')와 속성 값을 꺼내 가질 수있다; 나는 전체 개체 참조를 전달하고 사용하여 주위를 연주

function fooClick(e){ 
    var e = e || window.event 
    var t = e.target; 
    var clr = t.getAttribute("mycolor") 
    var el = document.getElementById('myoutput'); 
    el.innerHTML = "You picked " + clr; 
    el.style.background = clr; 
    if(clr == 'black' || clr == "blue'){ 
     el.style.color = "white"; 
    } 
    else{ 
     el.style.color = "black"; 
    } 
} 

편집

<div ng-controller="Ctrl"> 
    <div ng-repeat="junk in junkDataSet" onclick="fooClick(event)" mycolor="{{junk.color}}" class="contextmenu">right click here</div> 
</div> 

<div id="myoutput" ></div> 

http://jsfiddle.net/7yCwW/3/

... 지시어를 NG를 클릭합니다. 당신은 NG 클릭을 사용하는 것은 당신이 잘 일어나는 동작을 클릭 기본 브라우저를 유지 false를 반환해야 할 상황에 맞는 메뉴에 있기 때문에 더 - 이동하지

<div ng-repeat="{{junk in junkDataSet}}" onclick='fooClick({{junk}})' > ... </div> 
// in JSFiddle becomes invalid markup, but is actually OK 
<div onclick="{ "index" : 0, "color" : "red" }" > ... </div> 

사용할 수 있습니다. 현재 ng-click 지시어 b/c를 사용하여 컨트롤러 메소드로 해석 할 수 없으며 return 문은 해당 작업을 혼동합니다.

ng-contextmenu로 놀았지만 그 이벤트 핸들러 기능은 존재하지 않습니다. 각도에 추가하기는 쉽지만 핵심 오퍼링의 일부는 아닙니다.

어디에서 떠나나요? 원래 응답 (데이터를 특수 속성에 바인드) 또는 JS 변수의 일부 캐시 된 참조를 전체 목록으로 유지하고 일부 속성의 키만 바인드 할 수 있습니다. 또는 키를 함수의 매개 변수로 전달하십시오. 우아하지 않지만 v1 프레임 워크에서 모든 것을 가질 수는 없습니다.