将代码从 jQuery UI 1.7 升级到 1.8 失败
Upgrading code from jQuery UI 1.7 to 1.8 failing
我有一些旧的 jquery UI 代码,我想升级到今天的标准。由于我的代码是为 jQuery UI 1.7.3 编写的,所以我决定逐个版本升级到代码版本。发布列表可在此处找到:https://jqueryui.com/upgrade-guide/
因此,如果我打开 1.8 升级指南,我可以看到发生了什么变化。到目前为止,一切都很好。据我所知,以下更改适用于我的代码:
- 将 _init() 重命名为 _create()
- 将 _setData() 重命名为 _setOption()
- 删除了 _getData(),因为它永远不会被覆盖
- $.widget() 现在接受一个基本部件作为第二个参数进行扩展;默认为 $.Widget
虽然我不确定如何处理 _getData()
。我必须用 _Option
或 _getOption
替换它吗?这在指南中并不清楚。
然而,更改我的代码会导致应用程序无法运行。我希望有人能帮助我。
这是(部分)我的旧代码:
_init: function () {
var index = this.options.index;
var num_ranks = this._RANKS.length;
var suit = parseInt(index/num_ranks);
this._setData('suit', suit);
this._setData('rank', index - (suit * num_ranks));
this.element.addClass('container')
.append('<div class="downturned">');
},
_suit: function () { return this._getData('suit'); },
_rank: function () { return this._getData('rank'); },
在代码中更进一步:
$.widget('ui.card', Card); //Create the widget
$ui.card.getter = "is_downtunred";
以上我已经(使用指南)更改为:
_create: function () {
var index = this.options.index;
var num_ranks = this._RANKS.length;
var suit = parseInt(index/num_ranks);
this._setOption('suit', suit);
this._setOption('rank', index - (suit * num_ranks));
this.element.addClass('container')
.append('<div class="downturned">');
},
_suit: function () { return this._getOption('suit'); },
_rank: function () { return this._getOption('rank'); },
在代码中更进一步(此处未更改任何内容):
$.widget('ui.card', Card); //Create the widget
$ui.card.getter = "is_downtunred";
但这会阻止应用程序。任何人都知道为什么?我错过了什么?
感谢帮助
用 this.option()
替换 this._getData()
解决了我的问题
我有一些旧的 jquery UI 代码,我想升级到今天的标准。由于我的代码是为 jQuery UI 1.7.3 编写的,所以我决定逐个版本升级到代码版本。发布列表可在此处找到:https://jqueryui.com/upgrade-guide/
因此,如果我打开 1.8 升级指南,我可以看到发生了什么变化。到目前为止,一切都很好。据我所知,以下更改适用于我的代码:
- 将 _init() 重命名为 _create()
- 将 _setData() 重命名为 _setOption()
- 删除了 _getData(),因为它永远不会被覆盖
- $.widget() 现在接受一个基本部件作为第二个参数进行扩展;默认为 $.Widget
虽然我不确定如何处理 _getData()
。我必须用 _Option
或 _getOption
替换它吗?这在指南中并不清楚。
然而,更改我的代码会导致应用程序无法运行。我希望有人能帮助我。
这是(部分)我的旧代码:
_init: function () {
var index = this.options.index;
var num_ranks = this._RANKS.length;
var suit = parseInt(index/num_ranks);
this._setData('suit', suit);
this._setData('rank', index - (suit * num_ranks));
this.element.addClass('container')
.append('<div class="downturned">');
},
_suit: function () { return this._getData('suit'); },
_rank: function () { return this._getData('rank'); },
在代码中更进一步:
$.widget('ui.card', Card); //Create the widget
$ui.card.getter = "is_downtunred";
以上我已经(使用指南)更改为:
_create: function () {
var index = this.options.index;
var num_ranks = this._RANKS.length;
var suit = parseInt(index/num_ranks);
this._setOption('suit', suit);
this._setOption('rank', index - (suit * num_ranks));
this.element.addClass('container')
.append('<div class="downturned">');
},
_suit: function () { return this._getOption('suit'); },
_rank: function () { return this._getOption('rank'); },
在代码中更进一步(此处未更改任何内容):
$.widget('ui.card', Card); //Create the widget
$ui.card.getter = "is_downtunred";
但这会阻止应用程序。任何人都知道为什么?我错过了什么?
感谢帮助
用 this.option()
替换 this._getData()
解决了我的问题