1

jquery uiウィジェットオプションをデフォルトで文字列にしたいのですが、オブジェクトでオーバーライドできるようにしたいのです。これを行うと、実際には文字列が奇妙な方法でオブジェクトに変換され、渡されたオブジェクトで拡張されます。

$.widget("ui.test", {

    options: {
        anOption: "a,b,c"
    },

    _create: function() {
        console.log(this.options);
    }

});

$('div').test({
    anOption: {
        a: 'A'
    }
});

オプションをウィジェットに渡すことをスキップすると、_createメソッドで文字列として受信されます。オブジェクトを渡すと、奇妙な動作が発生します。chromes jsコンソールログでこれを取得しますが、これは私が望むものではありません。

Object
anOption: Object
0: "a"
1: ","
2: "b"
3: ","
4: "c"
a: "A"

どうすればこれを解決できますか?

jsfiddle: http: //jsfiddle.net/MatteS75/s9wK2/

4

2 に答える 2

1

ウィジェットの作成後にオプションを変更すると、必要なオブジェクトでオプションが上書きされます。これは受け入れられますか?

$.widget("ui.test", {

    options: {
        anOption: "a string"
    },

    _create: function() {
        console.log(this.options.anOption);
    }

});

$('div').test({});


$('div').test("option", "anOption", {
    a: "option1",
    b: "option2"
});

var anOption = $('div').test("option", "anOption");

​console.log(anOption);​
于 2012-10-23T13:39:57.250 に答える
0

これはごく最近修正されたバグです。

http://bugs.jqueryui.com/ticket/8713

https://github.com/jquery/jquery-ui/commit/9b908878ae3a9c0fbbd9958b579f223a648c5c69

于 2012-10-25T09:12:57.390 に答える