Ember.js leak with registration in favor of App.initializer

I am using the HashLocation extension to implement the hashbang URL type for Ember.js.

Here is the code snippet:

(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; } })); })(); 

I use this while opening a router:

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

However, when I launch the application, I find the following flaw:

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

I can not find any information on how to do this. Does anyone have any snippets of implementing what I would have to do?

+6
source share
1 answer

In accordance with the refusal message. use a 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); })(); 

Open it as usual

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

All Articles