我需要URL的'model/thing/1'部分的動態部分,因爲我試圖從當前加載的模型中訪問應用程序控制器中的模型數據在一個嵌套的路線。有沒有辦法訪問這個URL的動態部分,或者有另一種方式來訪問這些數據?如何獲取Ember中currentRouteName的動態部分js
回答
如果你需要的是頁面(而不是在當前模板上顯示的模型數據(或數據)其他地方),那麼你可以使用ember-elsewhere或ember-wormhole。
要訪問路徑參數,您可以注入私人routing service並使用其currentState.routerJsState.params
屬性。屬性包含每個可用路徑PARAMS通過電流路徑名這樣的索引:
{
application: {},
test: {
model_id: "19"
},
test.nested: {
nested_id: "1"
}
}
例如,顯示當前路線PARAMS我們需要沿着這些路線的東西:
控制器/ application.js中(可以是組件或任何餘燼對象)
import Ember from 'ember';
export default Ember.Controller.extend({
routing: Ember.inject.service('-routing'),
params: Ember.computed('routing.currentState', 'routing.currentRouteName', function() {
let allParams = this.get('routing.currentState.routerJsState.params');
let routeName = this.get('routing.currentRouteName');
return allParams[routeName];
}),
jsonParams: Ember.computed('params', function() {
let params = this.get('params');
return JSON.stringify(params);
})
});
模板/ application.hbs
<div>params={{jsonParams}}</div>
另一種選擇是創建一個服務並在相關路線中使用afterModel
鉤子中的所需數據填充該服務。
服務/數據service.js:
import Ember from 'ember';
export default Ember.Service.extend({
});
嵌套路線:
路由/ nested.js
import Ember from 'ember';
export default Ember.Route.extend({
dataService: Ember.inject.service('data-service'),
afterModel(model, transition) {
this.get('dataService').set('model', model);
}
});
控制器/ application.js中:
import Ember from 'ember';
export default Ember.Controller.extend({
dataService: Ember.inject.service('data-service')
});
templates/application.hb S:
<div>{{dataService.model}}</div>
既然你可能不希望以顯示所有路由這個數據,那麼你可以注入路由服務,並使用currentRouteName
屬性來決定何時表現出來。
這是獲取路由參數的完美選擇,儘管它將它作爲計算屬性返回,我需要它作爲字符串,因爲我需要將它傳遞給findRecord。我要去嘗試蟲洞。謝謝! –
是的。蟲洞工程!你救命吧。那正是我需要的。 –
model
鉤子中的第一個參數是params
,它包含您正在查找的內容。
這在導遊解釋:https://guides.emberjs.com/v2.11.0/routing/specifying-a-routes-model/#toc_dynamic-model
例子:
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.get('store').findRecord('photo', params.photo_id);
}
});
謝謝,但我需要訪問應用程序路由或控制器中的參數。這可能嗎? –
否。原因很明顯。如果你導航到/? – Gaurav
我不會問是否對我明顯的原因。你能澄清嗎?在這種情況下返回一個空字符串或類似的問題會出現什麼問題? –
- 1. Ember的currentPath和currentRouteName始終未定義
- 2. 獲取動態URL的一部分
- 3. 如何獲取動態生成的URL的一部分
- 4. 如何獲取Ember項目中元素的頂部偏移量?
- 5. Ember Js如何創建動態嵌套路線
- 6. 使用JS隱藏動態365部分
- 7. Ember外部js和全局
- 8. 如何動態顯示div部分中動態列的值?
- 9. 如何獲取動態表中的值?
- 10. 在Ember中選擇動態創建的複選框JS
- 11. 如何在jQuery中獲取動態分配ID的元素?
- 12. Ember js如何使用BasicAdapter
- 13. Ember JS中的滾動檢測?
- 14. JSF中的動態部分
- 15. URL中的「動態」部分
- 16. cmake如何部分靜態鏈接,部分動態鏈接?
- 17. js獲取php動態名稱變量
- 18. Ember ContainerView未能獲取當前狀態
- 19. 如何在Ember JS中爲視圖使用自定義/動態屬性?
- 20. 如何獲取D3.js餅圖從DOM動態呈現數據
- 21. 如何從JS函數獲取動態值
- 22. 如何在jquery中動態獲取值?
- 23. 如何在android中動態獲取ViewId
- 24. 如何獲取字符串的部分
- 25. 如何獲取圖像的一部分?
- 26. 如何獲取JSON對象的部分
- 27. 如何獲取mysql的「部分匹配」?
- 28. 如何在Angular Js的表單的動態文本框中獲取文本?
- 29. 如何從靜態JavaScript獲取對ember/emberjs中的視圖實例的引用?
- 30. JS頭部動態添加
你在路由'model'鉤子中收到它。 – Lux