在dojox / mvc包中使用Stateful对象时,声明性示例似乎在全局命名空间中定义了目标模型(没有" var"关键字定义)。这通过污染全局命名空间违反了良好Javascript设计的一般做法,更不用说使用不同的模型变得困难和混乱。
我的问题是,()声明的范围是什么,以及如何使用位于特定上下文/范围内的模型?
http://dojotoolkit.org/reference-guide/1.9/dojox/mvc.html#id6
答案 0 :(得分:6)
dojox/mvc/at通常使用data-dojo-props API。Dojo parser我想到了三件事情,即在那里设置“范围”:
parser.parse(rootNode, {propsThis: scopeObj});
运行data-dojo-props,您可以在widgets-in-template Relative data binding指定的对象中this
。这样data-dojo-props="widgetProp: at(this, 'scopeObjProp')"
指向scopeObj
中的属性。data-dojo-props="widgetProp: at(this, 'widgetsInTemplateProp')"
指向小部件在模板实例中的属性。 {{3}}通过“rel:”特殊语法在DOM中的小部件中创建target
属性。将对象设置为target
属性,如下例中的registry.byId("scopeWidget").set("target", {First: "John", Last: "Doe"});
,将填充<input>
中的值:
<script type="dojo/require">at: "dojox/mvc/at"</script>
<div id="scopeWidget"
data-dojo-type="dijit/_WidgetBase"
data-dojo-props="target: {}">
<div>
First:
<input data-dojo-type="dijit/form/TextBox"
data-dojo-props="value: at('rel:', 'First')">
</div>
<div>
Last:
<input data-dojo-type="dijit/form/TextBox"
data-dojo-props="value: at('rel:', 'Last')">
</div>
</div>
希望这有帮助。
最佳, 晃