Ich verwende eine Erweiterung von HashLocation, um einen Hashbang-URL-Typ für Ember.js zu implementieren. HierEmber.js deprecation of registerImplementation zugunsten von App.initializer
ist der Code-Schnipsel:
(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;
}
}));
})();
ich dies nutzen, indem Sie den Router Wiedereröffnung:
App.Router.reopen({
location: 'hashbang'
});
jedoch auf die Anwendung ausgeführt wird, Ich schlage die folgende deprecation:
DEPRECATION: Using the Ember.Location.registerImplementation is no longer supported. Register your custom location implementation with the container instead.
Ich kann keine Informationen finden, wie dies zu tun ist. Hat jemand irgendwelche Implementierungsschnipsel auf was ich tun müsste?
Perfect! Genau das, was ich wollte. Vielen Dank! –
Dies registriert die Implementierung in der Anwendung, nicht auf dem Container, wie die veraltete Nachricht vorschlägt. Sind das die gleichen? –