2016-10-14 7 views
0

vis.js visualization library을 사용하고 있습니다. 나는 그룹 "특별한"제거하려는vis.js : 데이터 세트의 항목 속성 제거

var nodes = new vis.DataSet([ 
    {id: 1, label: 'Item 1', group: "special"}, 
    {id: 2, label: 'Item 2'}, 
} 

사용하여 인스턴스화 된 vis.js dataset 있습니다. 항목 자체를 제거하지 않고

var nodes2 = new vis.DataSet([ 
    {id: 1, label: 'Item 1'}, 
    {id: 2, label: 'Item 2'}, 
} 

가 어떻게, DataSet 개체 내에서 항목에서 속성을 제거합니까 : 그 후, 데이터 세트의 상태는 그룹없이 인스턴스화 된 데이터 셋과 동일해야합니다?


방법 나는 성공하지 테스트 한 : nodes.update({id:1, groups: undefined})nodes.update({id:1, groups: null}), nodes.update({id:1, groups: 0})

+0

당신이 시도해 봤어 :'nodes.update ({ID : 1, 라벨 : '항목 1'})' – Mojtaba

+0

@Mojtaba가 방금했습니다. 작동하지 않습니다. 업데이트는 속성을 추가하고 덮어 씁니다. –

답변

0

마주 JS는, 오브젝트의 값, 따라서 단지 추가/새 값을 수정하지만 기존 제거하지 병합합니다. 나는 제거/삽입 로직으로 끝났다. 귀하의 경우에는 내가 할 것 :

let nodes = new vis.DataSet([ 
    {id: 1, label: 'Item 1', group: "special"}, 
    {id: 2, label: 'Item 2'}, 
} 

let nodeId = 1; 
let propertyToRemove = 'group'; 
// get a node 
let node = nodes.get(nodeId); 
// remove property 
delete node[propertyToRemove]; 

// get positions (only for nodes with x and y coordinates) 
// only if x and y are not present on original node 
let coordinates = vis.Network.getPositions([nodeId])[nodeId]; 
// copy coordinates 
node = Object.assign(node, coordinates); 

// remove node 
nodes.remove(nodeId); 
// add cloned node 
nodes.add(node); 

당신은 편의를 위해 vis.DataSet.prototype에 함수로이 코드를 작성할 수 있습니다