{{#with(expression)}}
Deprecated 4.15.0
Use let instead.
Changes the context within a block.
{{#with(EXPRESSION)}}BLOCK{{/with}}
Renders BLOCK
with the result of EXPRESSION
added to the top of the can-view-scope.
{{#with(person.address)}}
Street: {{street}}
City: {{city}}
{{/with}}
Parameters
- EXPRESSION
{KeyLookup Expression|Call Expression}
:A lookup expression that will provide a value.
- BLOCK
{sectionRenderer(context, helpers)}
:A template that is rendered with the context of the
EXPRESSION
’s value.
{{#with(HASHES)}}BLOCK{{/with}}
Renders BLOCK
with the key-value pairs from a Hash Expression added to the top of the can-view-scope.
{{#with(innerStreet=person.address.street innerCity=person.address.city)}}
Street: {{innerStreet}}
City: {{innerCity}}
{{/with}}
Parameters
- HASHES
{Hash Expression}
:Any number of hash keys and values
- BLOCK
{sectionRenderer(context, helpers)}
:A template that is rendered with the hashes added to the context.
Use
{{#with()}}
renders a subsection with a new context added to the can-view-scope.
For example:
<!-- Template -->
{{#with(person.address)}}
Street: {{street}}
City: {{city}}
{{/with}}
{ person: { address: { street: "123 Evergreen", city: "Springfield" } } }
<!-- Result -->
Street: 123 Evergreen
City: Springfield
The new context can be a lookup expression, or a set of hashes which are taken together to be a new context.
<!-- Template -->
{{#with(innerStreet=person.address.street innerCity=person.address.city)}}
Street: {{innerStreet}}
City: {{innerCity}}
{{/with}}
{ person: { address: { street: "123 Evergreen", city: "Springfield" } } }
<!-- Result -->
Street: 123 Evergreen
City: Springfield
The difference between {{#with()}}
and the default {{#expression}}
is that the subsection BLOCK
is rendered no matter what:
<!-- Template -->
{{#with(person.address)}}
Street: {{street}}
City: {{city}}
{{/with}}
{ person: {} }
<!-- Result -->
Street:
City: