2013-06-17 5 views
2

Мне нужно получить текущий url от Ember в качестве параметра redirectTo. Параметр будет использоваться для перенаправления пользователей на одну страницу после входа в систему из другого приложения. URL выглядитКак получить текущий url (включая часть после hash) с Ember

http://test.com/apps/#/tables/7 

Я нашел this post получить currentPath/маршрут из приложения. Он предоставляет текущее имя маршрута, но мне интересно, как я могу получить полный путь, включая идентификатор от Ember. У меня есть вложенное объявление маршрута, как показано ниже.

App.Router.map(function() { 
    this.resource('tables', function() { 
    this.resource('table', { path: ':table_id' }); 
    }); 
}); 

Любые предложения приветствуются. Благодаря!

ответ

0

Можете ли вы просто использовать window.location?

var url = window.location.href; 
+0

Я попробовал но URL-адрес не обновляется правильно, когда пользователи нажимают на другую таблицу. Я могу написать jquery, чтобы наблюдать изменение URL, но мне интересно, есть ли у Ember способ сделать это. – wen

+2

По моему опыту, это также не удастся при выполнении тестов интеграции/приёма. Он всегда будет возвращать '/ tests'. –

3

Соблюдайте currentPath в ApplicationController и обновить текущий URL:

App.ApplicationController = Ember.Controller.extend({ 
    currentPathDidChange: function() { 
    App.currentUrl = window.location.href; 
    }.observes('currentPath') 
}); 
+0

Спасибо! Панайотис! У меня есть аналогичный код, чтобы наблюдать изменение currentPath. Означает ли это, что нет простого способа получить весь URL от Ember? – wen

+0

AFAIK нет встроенного метода Ember.js, чтобы получить полный href. Не думайте, что это необходимо. Независимо от того, что работает :) –

+0

Это не работает во всех случаях и кажется «отстает» от URL. – elsurudo

0

Спасибо @Panagiotis Панаги, это работает.

Кроме того, CURRENTURL можно получить доступ только из контроллера приложения, так что если вы хотите получить его из другого места, вы можете добавить этот код к определенному контроллеру вы хотите получить доступ к нему:

export default Ember.Controller.extend({ 
    needs: ['application'], 
    currentPath: Ember.computed.alias('controllers.application.currentPath'), 
    ... 

} 
Смежные вопросы