Эти виджеты имеют отдельные вопросы. Путь dojox/mobile/Switch класс составлен с dojo/_base/declare не работает с тем, как dojox/mvc расширяет dijit/_WidgetBase, который является базовым классом большинства виджетов. Вам нужно будет применить расширение явно dojox/mobile/Switch работать вокруг этого вопроса, как:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojox/mobile/deviceTheme.js" data-dojo-config="mblThemeFiles: ['base']"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojo/dojo.js" data-dojo-config="async: 1, parseOnLoad: 0"></script>
<script type="text/javascript">
require([
"dojox/mvc/atBindingExtension",
"dojox/mobile/Switch"
], function(atBindingExtension, Switch){
atBindingExtension(Switch.prototype);
require([
"dojo/Stateful",
"dojox/mvc/at",
"dojox/mobile/parser",
"dojox/mvc/Output"
], function(Stateful, at, parser){
window.at = at;
window.model = new Stateful({
state: "off"
});
parser.parse();
});
});
</script>
</head>
<body>
<div data-dojo-type="dojox/mobile/Switch" data-dojo-props="value: at(model, 'state')"></div>
<div>Switch state: <span data-dojo-type="dojox/mvc/Output" data-dojo-props="value: at(model, 'state')"></span></div>
</body>
</html>
dojox/mobile/DatePicker не отправляет ввод пользователя обратно в атрибуте value
. Вам нужно будет следить за изменение каждого слота и обновить value
атрибут вручную, чтобы обойти, что:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojox/mobile/deviceTheme.js" data-dojo-config="mblThemeFiles: ['base', 'DatePicker']"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojo/dojo.js" data-dojo-config="async: 1, parseOnLoad: 0"></script>
<script type="text/javascript">
require([
"dojo/_base/array",
"dojo/aspect",
"dojo/date/locale",
"dojo/date/stamp",
"dojo/Stateful",
"dojox/mvc/at",
"dojox/mobile/parser",
"dojox/mobile/DatePicker",
"dojox/mvc/Output"
], function(array, aspect, locale, stamp, Stateful, at, parser, DatePicker){
window.at = at;
window.model = new Stateful({
date: stamp.toISOString(new Date())
});
aspect.after(DatePicker.prototype, "startup", function(){
var self = this,
slots = this.slots;
array.forEach(slots, function(slot){
self.own(slot.watch("value", function(){
var pattern = slots[0].pattern + "/" + slots[1].pattern + "/" + slots[2].pattern;
self._set("value", stamp.toISOString(locale.parse(slots[0].get("value") + "/" + slots[1].get("value") + "/" + slots[2].get("value"), {datePattern: pattern, selector: "date"})));
}));
});
});
parser.parse();
});
</script>
</head>
<body>
<div data-dojo-type="dojox/mobile/DatePicker" data-dojo-props="value: at(model, 'date')"></div>
<div>Date picker value: <span data-dojo-type="dojox/mvc/Output" data-dojo-props="value: at(model, 'date')"></span></div>
</body>
</html>
Надеется, что это помогает.
Бест, - Акира
Понятно, что это имеет смысл, хотя я не являюсь владельцем dojox/mobile. Вы можете ввести билет на bugs.dojotoolkit.org. – asudoh