我需要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. 無法獲得currentRouteName
- 4. 如何從Ember js項目中的str.split()獲取原始值
- 5. 如何獲取動態生成的URL的一部分
- 6. 如何在Ember JS中動態創建和渲染組件1.13+
- 7. 如何使用JS獲取動態cm中的帳戶名稱?
- 8. 如何獲取Ember-cli中的subdomainName(2.3)
- 9. 如何獲取Ember項目中元素的頂部偏移量?
- 10. 如何在Ember js
- 11. Ember&ember data:如何在多個模型中使用多個動態細分?
- 12. 如何從Play中的http.context獲取路線的動態部分!框架
- 13. 使用JS隱藏動態365部分
- 14. 如何在js文件中動態獲取字段ID?
- 15. Ember Js如何創建動態嵌套路線
- 16. Angular JS - $ http的動態URL獲取
- 17. 如何讀取Python中ELF文件的動態部分
- 18. 如何在Ember中獲取模型ID?
- 19. 使用ember的動態分頁
- 20. Ember js狀態處理
- 21. Ember外部js和全局
- 22. 如何動態顯示div部分中動態列的值?
- 23. 如何獲取動態表中的值?
- 24. 如何正確獲取動態JS的SVG路徑數據
- 25. 如何在jQuery中獲取動態分配ID的元素?
- 26. Ember JS根據模型中的內容動態呈現模板
- 27. 在Ember中選擇動態創建的複選框JS
- 28. 如何動態獲取值?
- 29. 如何獲取動態Cookie
- 30. 如何動態獲取articleId?
你在路由'model'鉤子中收到它。 – Lux