You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.1 KiB
67 lines
2.1 KiB
define([ |
|
"dojo/_base/kernel", |
|
"dojo/_base/lang", |
|
"./getStateful", |
|
"./StatefulModel", |
|
"./Bind", |
|
"./_DataBindingMixin", |
|
"./_patches" |
|
], function(kernel, lang, getStateful, 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 immediately |
|
// - if args.store: if store returns immediately, this function returns immediately; |
|
// if store returns a Promise, this function returns a model Promise |
|
|
|
if(args.data){ |
|
return getStateful(args.data, StatefulModel.getStatefulOptions); |
|
}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 = getStateful(data, StatefulModel.getStatefulOptions); |
|
model.store = args.store; |
|
return model; |
|
})); |
|
}else{ |
|
model = getStateful(result, StatefulModel.getStatefulOptions); |
|
model.store = args.store; |
|
return model; |
|
} |
|
} |
|
}; |
|
|
|
return mvc; |
|
});
|
|
|