2014-09-19 13 views
18

1,7 Ember, Sorgu Parametrelerini desteklemelidir. Onları kontrolörde kullanmakta hiçbir sorunum yok, ama onlara önce Route'da erişmek istiyorum.Güzergahdan sorgu parametrelerine nasıl erişilir? Ember 1.7

API docs, beforeModel kancası için bir quereyParam parametresinden bahsetmektedir, ancak kullanmayı denediğimde, her zaman tanımsızdır.

Query Parameters guide, sorgu parametrelerinin model kancasına ilk parametrenin bir parçası olarak erişilebilir olması gerektiğini öne sürmektedir. Ama bu da tanımsızdır. Örnekler için aşağıdaki kodlara bakın.

Rotadan sorgu parametrelerine erişmenin bir yolu var mı? Yardımlarınız için teşekkür ederiz. bu bir hata, ama geçiş nesnesi vasıtasıyla bu arada erişebilirsiniz

App.ApplicationRoute = Em.Route.extend({ 
    beforeModel: function(transition, queryParams){ 
     console.log(queryParams.test); //undefined at /?test=123 
    }, 
    model: function(params){ 
     console.log(params.test); //undefined at /?test=123 
    } 
}); 
+2

Model kancasında 'params' nesnesinden çekebilmeniz gerekir. bkz: http://emberjs.jsbin.com/necid/1/edit?html,js,console ,output Denetleyicide 'test 'sorgusunu sorguParam olarak mı ayarlıyorsunuz? – tikotzky

+0

Teşekkür ederim, öyleydi. Kontrolörün Rotayı etkileyebileceği hiç bir zaman olmadı. Ayarın yalnızca Controller'da sorguParams'a erişmek için olduğunu düşündüm. – jancervinka

cevap

19

Oldukça emin: denetleyicisi sorgu params belirterek

App.ApplicationRoute = Em.Route.extend({ 
    beforeModel: function(transition){ 
     console.log(transition.queryParams.test); 
    } 
} 
+2

Teşekkürler, bu işe yarıyor ve daha önceModel kancada bunu yapmak daha temiz. 1.8.1'de bile hala sabit olmadığı garip. Bir hata mı, yoksa belirsiz bir doküman mı olduğundan emin değilim. – jancervinka

+0

@typeoneerror: Çözümünüz yalnızca locationType otomatikse çalışır. Konum türü hash iseniz sorgu parametrelerini nasıl yakalayacağınızı biliyor musunuz? –

6

, params

bunları otomatik olarak içerecektir
ApplicationController = Ember.Controller.extend({ 
    queryParams: ['test'], 
    test: null 
}); 
+0

Bunlara nasıl erişebilirsiniz? console.log (this.get ('test')) 'bana bir tanımsız atıyor. Teşekkürler! –

+0

Tam olarak ... aynı sorun mu var? – testndtv

+1

Rotada 'this.controller.get ('test')' – Voles

-4

didTransiti'de erişmek istiyorsanız eylemi,

didTransition: (queryParams) -> 
    console.log(@get('queryParams')) 
5

son kor sürümünde

import Ember from 'ember'; 
export default Ember.Route.extend({ 
    beforeModel(params){ 
     console.log(params.queryParams.test); //if the parameter contains test as the key 
    } 
}); 

Bu locationType sizin environment.js dosyasında otomatik olması durumunda çalışır olarak Route değer elde edebilirsiniz.

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    queryParams: { 
     test: '' 
    }, 
    model(params) { 
     console.log(params.test); 
    }, 
}); 

hem dinamik kesimi artık gözlemleyin ve queryParams yoluyla erişilebilir şu şekildedir:

(Bu yanıtı yazma anda 2.12) köz son sürümünde
5

, queryParams modeli kanca ulaşılabilir params nesnesi. paramsbeforeModel kancasında bulunmadığından, bu çözüm model kancasına queryParams erişmeniz gerektiğinde çalışır.

İlgili konular