gpt4 book ai didi

javascript - Ember.js 弃用 registerImplementation 以支持 App.initializer

转载 作者:数据小太阳 更新时间:2023-10-29 05:10:18 27 4
gpt4 key购买 nike

我正在使用 HashLocation 的扩展来实现 Ember.js 的 hashbang url 类型。

这是代码片段:

(function() {

var get = Ember.get, set = Ember.set;

Ember.Location.registerImplementation('hashbang', Ember.HashLocation.extend({

getURL: function() {
return get(this, 'location').hash.substr(2);
},

setURL: function(path) {
get(this, 'location').hash = "!"+path;
set(this, 'lastSetURL', "!"+path);
},

onUpdateURL: function(callback) {
var self = this;
var guid = Ember.guidFor(this);

Ember.$(window).bind('hashchange.ember-location-'+guid, function() {
Ember.run(function() {
var path = location.hash.substr(2);
if (get(self, 'lastSetURL') === path) { return; }

set(self, 'lastSetURL', null);

callback(location.hash.substr(2));
});
});
},

formatURL: function(url) {
return '#!'+url;
}

}));

})();

我通过重新打开路由器来使用它:

App.Router.reopen({
location: 'hashbang'
});

但是,在运行该应用程序时,我遇到了以下弃用问题:

DEPRECATION: Using the Ember.Location.registerImplementation is no longer supported. Register your custom location implementation with the container instead.

我找不到有关如何执行此操作的任何信息。有没有人有关于我必须做什么的任何实现片段?

最佳答案

根据弃用消息。请改用容器。

(function() {

var get = Ember.get, set = Ember.set;

var hashbangLocation = Ember.HashLocation.extend({

getURL: function() {
return get(this, 'location').hash.substr(2);
},

setURL: function(path) {
get(this, 'location').hash = "!"+path;
set(this, 'lastSetURL', "!"+path);
},

onUpdateURL: function(callback) {
var self = this;
var guid = Ember.guidFor(this);

Ember.$(window).bind('hashchange.ember-location-'+guid, function() {
Ember.run(function() {
var path = location.hash.substr(2);
if (get(self, 'lastSetURL') === path) { return; }

set(self, 'lastSetURL', null);

callback(location.hash.substr(2));
});
});
},

formatURL: function(url) {
return '#!'+url;
}

});

App.register('location:hashbang', hashbangLocation);

})();

像往常一样重新打开它

App.Router.reopen({
location: 'hashbang'
});

关于javascript - Ember.js 弃用 registerImplementation 以支持 App.initializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22769586/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com