我想用D3樹形圖來擴展ElasticUI項目。如何在(角)JS中格式化D3樹形圖的JS對象
Apolagia: 我知道ElasticUI折舊,因爲它不再維護,但它給我帶來了一個很長的路,讓我嘗試用我,在JavaScript和AngularJS共初學者做夢也想不到的方式彈性數據我直接跳了進去,只用了elasticsearch.js,並試圖爲它編寫一個「服務」。第二件事:我說我有一個Object,但它可能是JSON數據,一個Array或一個格式化的String,就我所知。瀏覽器控制檯說我的數據包含「對象」。
這是我的html的瘦身版本,只有樹狀圖。
<body eui-enabled="true" ng-app="moviesearch" ng-controller="IndexController" eui-index="indexName">
<div id="dendrogram" class="d3-chart">
<eui-singleselect field="tweetMsg" size="10"></eui-singleselect>
<div class="nav nav-list" eui-aggregation="ejs.TermsAggregation('entries').field('tweetMsg').size(20)" eui-filter="ejs.TermsFilter('tweetMsg', bucket.key)" eui-enabled="filter.enabled" eui-filter-self="true">
<eui-var eui-key="dendroSelectorChartConfig" eui-value='
{
"name": "Top Level",
"children": (treeMap(aggResult.buckets))
}
'/>
<div class="container well">
<div d3-hierarchy="dendroSelectorChartConfig" depth="3"></div>
</div>
</div>
</div>
這裏是我的控制器的功能。它可能不應該在我的控制器應該嗎?我無法以其他方式使其工作。
$scope.treeMap = function mainTreeMapDiagramData(data) {
var i;
for(i = 0; i < data.length; i++) {
console.log("{\"name\":" + "\"" + data[i].key + "\"},");
// return "{\"name\":" + "\"" + data[i].key + "\"},";
}
};
你可能會笑,但其實這正確地記錄所產生的聚合條款對瀏覽器控制檯:
app.js:87 {"name":"https"},{"name":"t.co"},{"name":"movie"},{"name":"rt"}, {"name":"the"},{"name":"film"},{"name":"a"},{"name":"to"},{"name":"in"},{"name":"of"},{"name":"and"},
等等
但是,如果我註釋掉我的console.log ()並取消我的「返回」... D3不顯示任何內容。如果我將上面的列表直接複製到我的HTML中,它就可以工作。
我甚至還沒有開始考慮下一個級別 - 就像在孩子們的孩子那樣 - 我很樂意爲了獲得一個級別的工作。
謝謝您的閱讀!
編輯:如果有幫助,該項目是在這裏在線: https://analytics.molch.at/dendrogram.html