can.js を使用すると、次のように制御できます。
var Test_Controller = can.Control({
defaults: {
option1: 'option1',
option2: 'option2',
option3: {
nested1: 'nested1',
nested2: 'nested2',
nested3: 'nested3'
}
}
}, {
init: function() {
if ($(this.element).attr('data-newtext')) {
this.options.option3.nested2 = $(this.element).data('newtext');
}
$(this.element).text(this.options.option3.nested2);
}
});
.. そしてこのマークアップ:
<div class="instance1" data-newtext="newtext"></div>
<div class="instance2"></div>
..次に、そのコントロールのインスタンスを次のように作成すると:
var instance1 = new Test_Controller('.instance1', {});
var instance2 = new Test_Controller('.instance2', {});
私が期待するのは、単語がnewtext
挿入されnested2
た 2 つの div と単語が挿入された 2 つの div ですが、実際に表示されるのは単語がnewtext
挿入された 2 つの div です。
ネストを使用しないようにオプション オブジェクトを変更し、すべてのオプションを最上位に配置する場合、問題はありません。
そのため、オプションをデフォルトとマージするときに、canJS がネストされたオブジェクトを正しくマージしていないように見えます。これは事実ですか?分岐せずにこの機能をサポートする方法を知っている人はいますか? それとも、明らかな何かが欠けていますか?これができれば、面倒なオプション作成コードをたくさん書く必要がなくなります。