can
Version:
MIT-licensed, client-side, JavaScript framework that makes building rich web applications easy.
63 lines (40 loc) • 1.77 kB
Markdown
Scope
can.Construct
can.view.static
can/view/scope/test.html
can/view/scope
can.view.Scope.types types
Create a lookup node for [can.mustache.key keys].
`new can.view.Scope(context, [parent])`
2.0.1
{*} context A value that represents the
current context. This is often an object or observable and is the first
place a `key` is looked up.
{can.view.Scope} [parent] The parent scope. If a `key` value
is not found in the current scope, it will then look in the parent
scope.
{can.view.Scope} Returns a scope instance.
## Use
A `can.view.Scope` represents a lookup context and parent contexts
that can be used to lookup a [can.mustache.key key] value.
If no parent scope is provided, only the scope's context will be
explored for values. For example:
var data = {name: {first: "Justin"}},
scope = new can.view.Scope(data);
scope.attr("name.first") //-> "Justin"
scope.attr("length") //-> undefined
However, if a `parent` scope is provided, key values will be
searched in the parent's context after the initial context is explored. For example:
var list = [{name: "Justin"},{name: "Brian"}],
justin = list[0];
var listScope = new can.view.Scope(list),
curScope = new can.view.Scope(justin, listScope)
curScope.attr("name") //-> "Justin"
curScope.attr("length") //-> 2
Use [can.view.Scope::add add] to easily create a new scope from a parent scope like:
var list = [{name: "Justin"},{name: "Brian"}],
justin = list[0];
var curScope = new can.view.Scope(list).add(justin);
curScope.attr("name") //-> "Justin"
curScope.attr("length") //-> 2
can.view.