68 lines
1.5 KiB
JavaScript
68 lines
1.5 KiB
JavaScript
|
dojo.provide("dojox.dtl.Context");
|
||
|
dojo.require("dojox.dtl._base");
|
||
|
|
||
|
dojox.dtl.Context = dojo.extend(function(dict){
|
||
|
this._this = {};
|
||
|
dojox.dtl._Context.call(this, dict);
|
||
|
}, dojox.dtl._Context.prototype,
|
||
|
{
|
||
|
getKeys: function(){
|
||
|
var keys = [];
|
||
|
for(var key in this){
|
||
|
if(this.hasOwnProperty(key) && key != "_dicts" && key != "_this"){
|
||
|
keys.push(key);
|
||
|
}
|
||
|
}
|
||
|
return keys;
|
||
|
},
|
||
|
extend: function(/*dojox.dtl.Context|Object*/ obj){
|
||
|
// summary: Returns a clone of this context object, with the items from the
|
||
|
// passed objecct mixed in.
|
||
|
return dojo.delegate(this, obj);
|
||
|
},
|
||
|
filter: function(/*dojox.dtl.Context|Object|String...*/ filter){
|
||
|
// summary: Returns a clone of this context, only containing the items
|
||
|
// defined in the filter.
|
||
|
var context = new dojox.dtl.Context();
|
||
|
var keys = [];
|
||
|
var i, arg;
|
||
|
if(filter instanceof dojox.dtl.Context){
|
||
|
keys = filter.getKeys();
|
||
|
}else if(typeof filter == "object"){
|
||
|
for(var key in filter){
|
||
|
keys.push(key);
|
||
|
}
|
||
|
}else{
|
||
|
for(i = 0; arg = arguments[i]; i++){
|
||
|
if(typeof arg == "string"){
|
||
|
keys.push(arg);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for(i = 0, key; key = keys[i]; i++){
|
||
|
context[key] = this[key];
|
||
|
}
|
||
|
|
||
|
return context;
|
||
|
},
|
||
|
setThis: function(/*Object*/ _this){
|
||
|
this._this = _this;
|
||
|
},
|
||
|
getThis: function(){
|
||
|
return this._this;
|
||
|
},
|
||
|
hasKey: function(key){
|
||
|
if(typeof this[key] != "undefined"){
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
for(var i = 0, dict; dict = this._dicts[i]; i++){
|
||
|
if(typeof dict[key] != "undefined"){
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
});
|