0

我正在自定义一个插件,该插件具有包含配置项的数组(如果是这样的话):

        var config = {
            width:  "100%",
            height: "100%",
            source: 'js/timeline/test.json',                
            css:    'js/timeline/compiled/css/timeline.css',    
            js:     'js/timeline/compiled/js/timeline-min.js'   
        }

我想要做的是获取source:数据并将其替换为变量,例如:

var mysource = 'path/to/source.json';

var config = {
                width:  "100%",
                height: "100%",
                source: mysource ,              
                css:    'js/timeline/compiled/css/timeline.css',    
                js:     'js/timeline/compiled/js/timeline-min.js'   
            }

但由于它上面它不起作用。谁能指出我正确的方向?谢谢

编辑:按要求添加完整代码

$(function() {

    $.getJSON('http://www.mysite.com/json.php',

    function(data) {

        jsonObject = eval(data);
        var eventdata = jsonObject.tlall;

    });

}); //END ON LOAD

var config = {
    width: "100%",
    height: "100%",
    source: eventdata,
    //source: 'js/timeline/test.json',
    //start_at_end: true,   //OPTIONAL              
    //hash_bookmark: true,  //OPTIONAL              
    css: 'js/timeline/compiled/css/timeline.css',
    js: 'js/timeline/compiled/js/timeline-min.js'
}​
4

3 回答 3

2

更改此行:

var eventdata = jsonObject.tlall;

对此:

config.source = jsonObject.tlall;

并从您的配置定义中删除这一行:

source: eventdata,
于 2012-08-23T06:38:32.913 回答
1

我不知道您打算如何使用config,但您肯定需要它在同一范围内才能访问eventdata。我会说完全摆脱它,只需将它作为对象的属性添加到 ajax 回调中(如下面的代码所示)。

config这里的困难在于,在您可以在脚本中使用之前,您必须等待 AJAX 回调触发;这就是为什么 ajax 被设计用于在特定事件之后执行的回调而不是线性的;我建议您config仅在该成功回调中使用,或添加检查以查看是否getJSON已完成执行。

$(function() {

    var config = {
        width: "100%",
        height: "100%",            
        css: 'js/timeline/compiled/css/timeline.css',
        js: 'js/timeline/compiled/js/timeline-min.js'
    };

    $.getJSON('http://www.mysite.com/json.php', function(data) {
        jsonObject = eval(data);
        config.source = jsonObject.tlall;
    });

}); //END ON LOAD​​​​​​​​​​​​​​​​
于 2012-08-23T06:39:36.427 回答
1

范围问题,请尝试:

$(function() {
    $.getJSON('http://www.mysite.com/json.php', function(data) {
        config.source = data.tlall;
    });

    var config = {
        width: "100%",
        height: "100%",
        css: 'js/timeline/compiled/css/timeline.css',
        js: 'js/timeline/compiled/js/timeline-min.js'
    }
});​
​
于 2012-08-23T06:38:00.380 回答