summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/mvc/_base.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/mvc/_base.js')
-rw-r--r--js/dojo/dojox/mvc/_base.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/js/dojo/dojox/mvc/_base.js b/js/dojo/dojox/mvc/_base.js
new file mode 100644
index 0000000..cbdad32
--- /dev/null
+++ b/js/dojo/dojox/mvc/_base.js
@@ -0,0 +1,65 @@
+//>>built
+define("dojox/mvc/_base", [
+ "dojo/_base/kernel",
+ "dojo/_base/lang",
+ "./StatefulModel",
+ "./Bind",
+ "./_DataBindingMixin",
+ "./_patches"
+], function(kernel, lang, StatefulModel){
+ // module:
+ // dojox/mvc/_base
+ // summary:
+ // Pulls in essential MVC dependencies such as basic support for
+ // data binds, a data model and data binding mixin for dijits.
+ kernel.experimental("dojox.mvc");
+
+ var mvc = lang.getObject("dojox.mvc", true);
+ /*=====
+ mvc = dojox.mvc;
+ =====*/
+
+ // Factory method for dojox.mvc.StatefulModel instances
+ mvc.newStatefulModel = function(/*Object*/args){
+ // summary:
+ // Factory method that instantiates a new data model that view
+ // components may bind to.
+ // args:
+ // The mixin properties.
+ // description:
+ // Factory method that returns a client-side data model, which is a
+ // tree of dojo.Stateful objects matching the initial data structure
+ // passed as input:
+ // - The mixin property "data" is used to provide a plain JavaScript
+ // object directly representing the data structure.
+ // - The mixin property "store", along with an optional mixin property
+ // "query", is used to provide a data store to query to obtain the
+ // initial data.
+ // This function returns an immediate dojox.mvc.StatefulModel instance or
+ // a Promise for such an instance as follows:
+ // - if args.data: returns immediate
+ // - if args.store:
+ // - if store returns immediate: this function returns immediate
+ // - if store returns a Promise: this function returns a model
+ // Promise
+ if(args.data){
+ return new StatefulModel({ data : args.data });
+ }else if(args.store && lang.isFunction(args.store.query)){
+ var model;
+ var result = args.store.query(args.query);
+ if(result.then){
+ return (result.then(function(data){
+ model = new StatefulModel({ data : data });
+ model.store = args.store;
+ return model;
+ }));
+ }else{
+ model = new StatefulModel({ data : result });
+ model.store = args.store;
+ return model;
+ }
+ }
+ };
+
+ return mvc;
+});