我使用NVD3 1.8.1與3.5.6 D3。NVD3 arcTween FUNC拋出未定義的錯誤
我有一個奇怪的問題,即由於某種原因(約5-10%的時間)我圖形不加載。
錯誤是「未捕獲類型錯誤:對象是不是一個函數」在nv.d3.js由arcTween功能(餅圖)拋出:
function arcTween(a, idx) {
a.endAngle = isNaN(a.endAngle) ? 0 : a.endAngle;
a.startAngle = isNaN(a.startAngle) ? 0 : a.startAngle;
if (!donut) a.innerRadius = 0;
var i = d3.interpolate(this._current, a);
this._current = i(0);
return function (t) {
return arcs[idx](i(t));
};
}
調試時,我可以看到的值都在這個地方,即idx似乎是整個nvd3庫的參考,而不是一個整數! 「我」是一個數字不是一個函數,this._current是不確定等
如果我刷新它打破上的時間平均大概5〜10%的頁面。除此之外,它一切正常,如預期。
我創建了一個codepen here,但不能複製的問題,不幸的是......我應該提到這是所有包含在一個角度指令,併產生的角度傳遞創建指令時的'元素'。
鑑於我只能在代碼中間歇性地重新創建它,我知道它一定是我的代碼出了問題,但我無法弄清楚,所以作爲最後的手段認爲我會在這裏發佈問題。
有沒有人見過這個問題之前?有什麼建議來解決這個問題?我正在考慮像檢查圖形是否已經正確生成,否則嘗試再次渲染它,但它不討厭找到根本原因。
我會爲任何建議表示感謝,
山姆
編輯:
而且,圖表部分產生,只是 '路徑' 缺少對每個 '切片':
<svg class="_pie1 nvd3-svg"><g class="nvd3 nv-wrap nv-pieChart" transform="translate(20,30)"><g><g class="nv-pieWrap nvd3-svg"><g class="nvd3 nv-wrap nv-pie nv-chart-2110" transform="translate(0,0)"><g><g class="nv-pie" transform="translate(177.5,172.5)"><g class="nv-slice" fill="#00385D" stroke="#00385D"><path></path></g><g class="nv-slice" fill="transparent" stroke="transparent"><path></path></g></g><g class="nv-pieLabels" transform="translate(177.5,172.5)"></g></g></g></g><g class="nv-legendWrap"></g></g></g><text x="195" y="180" dy="-.7em" class="nv-title" style="text-anchor: middle;">Total income*</text><text x="195" y="210" dy="-.7em" class="nv-titleValue" style="text-anchor: middle;">£4,543</text><line x1="130" y1="205" x2="265" y2="205" stroke-width="0.1" stroke="#333333"></line><text x="195" y="245" dy="-.7em" class="nv-title" style="text-anchor: middle;">Total outgoings</text><text x="195" y="275" dy="-.7em" class="nv-titleValue" style="text-anchor: middle;">£46,574</text></svg>
再次編輯:如果我刪除50ms超時(請參閱codepen),我每次都會收到錯誤,所以這裏有一些時間問題。
嗨@DubstepCat,這是正確的,該行引發錯誤。這是一個來自nvd3庫的函數。我按照你的建議改變了它,但是這導致圖形從不產生並且每次都拋出錯誤(錯誤:屬性d =「NaN」的值無效)。感謝您的及時幫助 –
sam9046