2017-02-26 2 views
1

gojs 다이어그램 모델 nodeKeyProperty을 설정하려고합니다. 다음 코드는 내가하려고하는 것입니다. -GoJS - 잡히지 않은 오류 : Model.makeNodeDataKeyUnique가 [object Object]에서 실패했습니다.

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gojs/1.6.7/go-debug.js"></script> 
</head> 
<body> 
    <div id="myDiagramDiv" style="width:400px; height:150px; background-color: #DAE4E4;"></div> 
    <script type="text/javascript"> 
     var $ = go.GraphObject.make; 
     var diagram = $(go.Diagram, "myDiagramDiv"); 

     diagram.nodeTemplate = $(go.Node, "Auto", 
      $(go.Shape, "RoundedRectangle", new go.Binding("fill", "fill").makeTwoWay()), 
      $(go.TextBlock, new go.Binding("text", "id")) 
     ); 

     diagram.model = new go.GraphLinksModel(); 

     diagram.model.nodeKeyProperty = function(nodeData, id) { 
      // id && (nodeData.id = id);// enabling it will fix the issue. 
      return nodeData.id; 
     }; 

     diagram.model.addNodeData({ 
      fill:"green" 
     }) 
    </script> 
</body> 
</html> 

그러나이 코드를 성공적으로 실행할 수는 없습니다.

Uncaught Error: Model.makeNodeDataKeyUnique failed on [object Object]. Data not added to Model. 
    at Object.k (go-debug.js:31) 
    at X.L.addNodeData.L.vl (go-debug.js:356) 
    at index-copy.html:26 

나는 gojs 코드를 디버깅하기 위해 노력하고 어떻게 든 id && (nodeData.id = id)nodeKeyProperty에 구현을 추가하면 문제를 해결할 수 있다고 생각 - 나는 다음과 같은 오류를 얻고있다. 그러나 docs에서 그것의 명확하지 않은 경우 그것은 필요했다. 내가 뭐 잘못하고 있니?

미리 감사드립니다.

답변

2

Model.nodeKeyProperty의 설명서가 불완전합니다. 값이 함수이면 하나 또는 두 개의 인수를 취해야합니다. 인수가 하나만 있으면 해당 데이터 객체의 숫자 또는 문자열 키 값을 반환해야합니다. 2 개의 인수가있는 경우, 2 번째의 인수의 값을 키의 값으로해서 그 Object를 변경합니다.

하지만 Model.nodeKeyProperty를 "id"로 설정하지 않아야합니까?

+0

감사합니다. 예 "id"를 설정하면 작동하지만 나중에 ID가 개체의 어딘가에 들어가기 때문에 실험하고있었습니다. –

관련 문제