1
0
mirror of synced 2024-11-25 22:36:03 +03:00

Exposes select2 instance via .data('select2')

This commit is contained in:
Nadeem Afana 2017-11-19 09:51:07 -08:00 committed by alexweissman
parent 5424333425
commit 6d0ecbc912
2 changed files with 43 additions and 0 deletions

View File

@ -84,6 +84,9 @@ define([
this._syncAttributes(); this._syncAttributes();
Utils.StoreData($element[0], 'select2', this); Utils.StoreData($element[0], 'select2', this);
// Ensure backwards compatibility with $element.data('select2').
$element.data('select2', this);
}; };
Utils.Extend(Select2, Utils.Observable); Utils.Extend(Select2, Utils.Observable);
@ -579,6 +582,7 @@ define([
this.$element.removeClass('select2-hidden-accessible'); this.$element.removeClass('select2-hidden-accessible');
this.$element.attr('aria-hidden', 'false'); this.$element.attr('aria-hidden', 'false');
Utils.RemoveData(this.$element[0]); Utils.RemoveData(this.$element[0]);
this.$element.removeData('select2');
this.dataAdapter.destroy(); this.dataAdapter.destroy();
this.selection.destroy(); this.selection.destroy();

View File

@ -1,5 +1,7 @@
module('select2(val)'); module('select2(val)');
var Utils = require('select2/utils');
test('multiple elements with arguments works', function (assert) { test('multiple elements with arguments works', function (assert) {
var $ = require('jquery'); var $ = require('jquery');
require('jquery.select2'); require('jquery.select2');
@ -57,3 +59,40 @@ test('initializes when jQuery $.data contains' +
'The option value should be pulled correctly' 'The option value should be pulled correctly'
); );
}); });
test('$element.data returns instance and options correctly',
function (assert) {
var $ = require('jquery');
require('jquery.select2');
var $select = $(
'<select>' +
'<option value="1">One</option>' +
'<option value="2">Two</option>' +
'<option value="3" selected>Three</option>' +
'</select>'
);
// Initialize.
$select.select2({maximumSelectionLength: 2, multiple: true});
assert.equal(
$select.val(),
'3',
'Only 1 option should be pulled.'
);
// Try to resolve instance via .data('select2').
var $instance = $select.data('select2');
assert.ok($instance);
assert.ok($instance.options);
// Ensure $select.data('select2') is the same instance
// created by .select2()
assert.equal($instance, Utils.GetData($instance.$element[0],
'select2'));
// Ensure initialized property matches.
assert.equal($instance.options.options.maximumSelectionLength,
2);
});