如何将选项对象放在flot中

时间:2014-03-10 20:24:06

标签: javascript flot

我有以下javascript:

  if(i==1&&$('#ln').val()=='true')
    ops={
      xaxis: {show:false},
      yaxis: {show:false,
              transform: function (v) { return -v; },
              inverseTransform: function (v) { return -v; }}}
  else ops={xaxis: {show:false}, yaxis: {show:false}};
  $.plot($(gr), pdat,ops);

当我尝试创建ops字符串时,我在解析它时遇到错误。我想这是因为功能。 如何组合选项以便根据不同的条件添加其他选项?在示例中,我们的想法是避免重复xaxis: {show:false}, yaxis: {show:false}

2 个答案:

答案 0 :(得分:3)

您可以使用公共属性填充ops对象,然后在if语句中添加其他对象:

  // initalize ops with common properties
  var ops = {
      xaxis: {show: false},
      yaxis: {show: false}
  };
  if (i == 1 && $('#ln').val() == 'true') {
      ops.yaxis.transform = function (v) { return -v; };
      ops.yaxis.inverseTransform = function (v) { return -v; };
  }
  $.plot($(gr), pdat, ops);

答案 1 :(得分:2)

如果你有一个更复杂的场景,我建议使用jquery的extend方法:

var ops = {
  xaxis: {show: false},
  yaxis: {show: false}
};
if (i == 1 && $('#ln').val() == 'true') {
    $.extend(true, ops, {
      yaxis: {
         transform: function (v) { return -v; },
         inverseTransform: function (v) { return -v; }
      }
    });
}

Ops现在是:

{
  "xaxis":{
     "show":false
   },
  "yaxis":{
     "show":false,
     "transform": function (v) { return -v; },
     "inverseTransform": function (v) { return -v; }
   }
}