У меня странная проблема с контекстами Dust.js. Раньше я передавал модель представления в виде обычного старого объекта JavaScript, например. res.render('page', { something: [1,2,3] }
и т.д. При выполнении этого, я мог бы получить доступ к something
на локальном контексте с {#something}...{/something}
и т.д.Почему префикс stack.head необходим для доступа к локальному контексту в Dust.js?
Однако, я изменил способ, я управляю контекстом использовать dust.makeBase
, так что я могу иметь глобал и какое-то стек, а чем просто объект. Я использую consolidate
с express
FWIW.
Теперь я создаю baseViewModel.
//
// at application init
//
app.baseViewModel = dust.makeBase({
someGlobal: 'example'
})
Позже, при рендеринге, я могу продлить его следующим образом:
//
// in route handler
//
const viewModel = app.baseViewModel.push({
collection: someCollection
})
res.render('index', viewModel)
Но тогда, стек контекста выглядит следующим образом:
{
"settings": {
// snip
},
"stack": {
"isObject": true,
"head": {
"collection": [
// snip
]
}
},
"global": {
"someGlobal": "example"
}
}
Проблема заключается в том, в настоящее время, для доступа к коллекции, я должен префикс переменных с stack.head.
:
{#stack.head.collection}
<!-- etc -->
{/stack.head.collection}
Кто-нибудь знает, почему это так, и как я могу вернуться к простому способу просто ссылаться на {#collection}
и т. Д.?
спасибо.
Вам не нужно ничего делать - 'head' - это просто внутреннее представление стека контекста, и пыль будет пересекать его изначально для вас. – Interrobang
https://jsfiddle.net/xb3u2s84/ базовый пример – Interrobang
Я понимаю это, но он не работает. Как только я отошел от POJO к объекту контекста пыли (для глобалов), я потерял способность сделать это. Любая идея, почему это может быть? Я думаю, что это может иметь какое-то отношение к «консолидации». –