Javascript 使用来自服务器的数据填充ObservalArray后,打印饼图已清除
我正在使用knockout.js2.1和jquery.flot0.7。我遇到的问题非常奇怪,我无法在JSFIDLE上复制它。不过,我会尽力解释(希望这就足够了) 因此,我有一个容器,我正在将我的ko视图模型绑定应用到该容器。在该视图模型中,我有Javascript 使用来自服务器的数据填充ObservalArray后,打印饼图已清除,javascript,jquery,ajax,knockout.js,flot,Javascript,Jquery,Ajax,Knockout.js,Flot,我正在使用knockout.js2.1和jquery.flot0.7。我遇到的问题非常奇怪,我无法在JSFIDLE上复制它。不过,我会尽力解释(希望这就足够了) 因此,我有一个容器,我正在将我的ko视图模型绑定应用到该容器。在该视图模型中,我有ko.observearray,其中使用“$.ajax”填充了来自服务器的数据。在tat容器中,我还有一个饼图(如果我没有进行ajax调用,或者只是没有用数据填充ko.observearray,这个饼图就可以正常工作) 饼图: <div id="as
ko.observearray
,其中使用“$.ajax”填充了来自服务器的数据。在tat容器中,我还有一个饼图(如果我没有进行ajax调用,或者只是没有用数据填充ko.observearray
,这个饼图就可以正常工作)
饼图:
<div id="asdasdasd111" style="height: 300px; width: 100%;"></div>
<script>
$(function () {
var dasdasdasdadsasdata = [
{ label: "Series1", data: 10 },
{ label: "Series2", data: 30 },
{ label: "Series3", data: 90 }
];
$.plot('#asdasdasd111', dasdasdasdadsasdata, {
series: {
pie: {
show: true
}
}
});
});
</script>
所以问题是,当我在$中使用回调时,这个饼图会被清除:
$.ajax(
url: "/api/tools/configurationsections"
success: callback
)
但当我这样使用它时,一切都很好:
callback([1, 4, 5, 8])
setTimeout( ( => callback([1, 4, 5, 8]) ), 3000 )
我还发现,当我不从服务器遍历数据时,ajax调用的一切都很好——因此,如果从回调中删除最后一个for
,一切都很好
请告诉我是什么导致了这个奇怪的问题,因为我已经没有任何想法了
编译的Javascript:
callback = (function(_this) {
return function(data1) {
var item, test, _i, _j, _len, _len1, _ref;
alert("chart exists");
_this.sections.push(new MyNamespace.MySection({
DisplayName: data1[0]
}));
_this.sections.push(new MyNamespace.MySection({
DisplayName: data1[1]
}));
alert("chart still exists");
_ref = ["asdasd", "qweqwe"];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
test = _ref[_i];
_this.sections.push(new MyNamespace.MySection({
DisplayName: test
}));
}
alert("chart still exists");
for (_j = 0, _len1 = data1.length; _j < _len1; _j++) {
item = data1[_j];
_this.sections.push(new MyNamespace.MySection(item));
}
return alert("click Ok to make pie chart disappear =[");
};
})(this);
callback=(函数(\u this){
返回函数(数据1){
风险值项目、测试、i、j、len、len1、ref;
警报(“图表存在”);
_this.sections.push(新建MyNamespace.MySection({
DisplayName:data1[0]
}));
_this.sections.push(新建MyNamespace.MySection({
DisplayName:data1[1]
}));
警报(“图表仍然存在”);
_ref=[“asdasd”,“qweqwe”];
对于(_i=0,_len=_ref.length;_i<_len;_i++){
测试=_ref[_i];
_this.sections.push(新建MyNamespace.MySection({
显示名称:测试
}));
}
警报(“图表仍然存在”);
对于(_j=0,_len1=data1.length;_j<_len1;_j++){
项目=数据1[_j];
_this.sections.push(新的MyNamespace.MySection(项));
}
返回警报(“单击确定使饼图消失=[”;
};
})(本条);
我猜来自服务器的数据不是数组。请检查data1
回调函数中是否包含数组!@nemesv不幸的是,它是数组。奇怪的是,我的图表和分区数组不相关-我有一个表,其中我使用了ko foreach:section(将每个部分显示为一行)。另一件奇怪的事情是,如果我使用简单的折线图而不是饼图,一切都很好。你能在其中复制你的问题吗?我没有为Chrome/IE兼容性设置github资源,所以是Firefox。
callback = (function(_this) {
return function(data1) {
var item, test, _i, _j, _len, _len1, _ref;
alert("chart exists");
_this.sections.push(new MyNamespace.MySection({
DisplayName: data1[0]
}));
_this.sections.push(new MyNamespace.MySection({
DisplayName: data1[1]
}));
alert("chart still exists");
_ref = ["asdasd", "qweqwe"];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
test = _ref[_i];
_this.sections.push(new MyNamespace.MySection({
DisplayName: test
}));
}
alert("chart still exists");
for (_j = 0, _len1 = data1.length; _j < _len1; _j++) {
item = data1[_j];
_this.sections.push(new MyNamespace.MySection(item));
}
return alert("click Ok to make pie chart disappear =[");
};
})(this);