我正在尝试将此组件 jchartfx 与 Durandel 集成。我有一个使用没有 Durandel 的淘汰赛的独立原型,它运行良好,所以我相信这个问题与 Durandel 相关。
这是我的视图模型代码:
define(function (require) {
var http = require('durandal/http');
var serverUrl = '/api/burndown';
var chart1;
function burnDownModel() {
var self = this;
self.initilize = true;
self.displayName = 'Burndown Chart';
self.description = 'Burndown Chart';
self.chartData = ko.observableArray([]);
self.viewAttached = function() {
};
// testing with fake data
self.activate = function () {
return http.get(serverUrl).then(function (response) {
for (var i = 0; i < 10; i++) {
var data = {
"Date": '2013-02-18T00:00:00',
"DevCurrentEstimates": 6.5,
"TestCurrentEstimates": 7.5,
"DevOriginalEstimates": 8.5,
"TestOriginalEstimates": 9.5
};
self.chartData.push(data);
}
ko.bindingHandlers.jchartFx = {
init: function (element, valueAccessor) {
chart1 = new cfx.Chart();
chart1.getData().setSeries(4);
chart1.getAxisX().getLabelsFormat().setFormat(cfx.AxisFormat.Date);
chart1.getAxisX().getLabelsFormat().setCustomFormat("MMM-dd");
debugger;
var value = ko.utils.unwrapObservable(valueAccessor());
chart1.setDataSource(value);
chart1.create(element);
}
};
});
};
};
return burnDownModel;
});
和我的 html 绑定
<div id="ChartDiv1" class="chartdiv" data-bind="jchartFx:chartData"style="width:550px;height:400px;display:inline-block"></div>
正如我所说,我在没有杜兰德尔的情况下也能完成这项工作。
这是该解决方案的脚本:
<script type="text/javascript">
$(function () {
var viewModel = {
chartDatas: ko.observableArray([])
};
LoadChartData();
function LoadChartData() {
for (var i = 0; i < 10; i++) {
var chartData = {
"Date": '2013-02-18T00:00:00',
"DevCurrentEstimates": 6.5,
"TestCurrentEstimates": 7.5,
"DevOriginalEstimates": 8.5,
"TestOriginalEstimates": 9.5
};
viewModel.chartDatas.push(chartData);
}
}
ko.applyBindings(viewModel);
});
</script>
我能看到的唯一区别是这个脚本在页面加载时运行,而且我必须手动应用 ko 绑定,而不是 Durandel 为我做的。我没有收到任何错误,只是没有显示图表数据。