jQuery 插件覆盖默认设置中的 url

jQuery plugin overriding the url in default settings

嘿,我正在创建一个 jquery 插件,它的默认设置为

var settings = {
        renderTo:'body',
        width: 800,
        height:900,
        url:'miserables.json',
        zoom:true,
        loadingText:"loading...",
        margin:{
                    top: -5,
                    right: -5,
                    bottom: -5,
                    left: -5
                }
    };

所以当我将此设置覆盖为

$(function(){
$('#diagram').renderSvg({
    renderTo: '#diagram', // THIS IS WORKING
    height:500, // THIS IS WORKING
    width:200, // THIS IS WORKING
    url:'check.json' //THIS IS NOT WORKING INSTEAD OF I'M GETTING DEFAULT URL
});

});

所以怎么能覆盖url。请帮帮我。提前致谢

通常您使用自定义设置扩展默认选项。为此,将 settings 初始化移动到 renderData 函数中并从 renderSvg 中调用它,例如:

this.renderData(options);

所以代码会变成:

$.fn.renderData = function (options) {

    var options = $.extend({}, {
        renderTo: 'body',
        width: 800,
        height: 900,
        url: 'miserables.json',
        zoom: true,
        loadingText: "loading...",
        margin: {
            top: -5,
            right: -5,
            bottom: -5,
            left: -5
        }
    }, options);

    console.log(options.url);

    // ...
};

 $.fn.renderSvg = function (options) {
     this.renderData(options);
     // ...
 };