在 dojox/mvc 包中使用有状态对象时,声明性示例似乎在全局命名空间中具有目标模型(定义时没有使用“var”关键字)。这通过污染全局命名空间违反了良好 Javascript 设计的一般做法,更不用说使不同模型的使用变得困难和混乱了。
我的问题是,该声明性 at() 的范围是什么?如何使用位于某个上下文/范围内的模型?
http://dojotoolkit.org/reference-guide/1.9/dojox/mvc.html#id6
在 dojox/mvc 包中使用有状态对象时,声明性示例似乎在全局命名空间中具有目标模型(定义时没有使用“var”关键字)。这通过污染全局命名空间违反了良好 Javascript 设计的一般做法,更不用说使不同模型的使用变得困难和混乱了。
我的问题是,该声明性 at() 的范围是什么?如何使用位于某个上下文/范围内的模型?
http://dojotoolkit.org/reference-guide/1.9/dojox/mvc.html#id6
dojox /mvc/at API 通常用于data-dojo-props 的地方。我想到了三件事来谈论在那里设置“范围”:
parser.parse(rootNode, {propsThis: scopeObj});
可以使data-dojo-props中的指定对象。以这种方式指向 中的一个属性。this
data-dojo-props="widgetProp: at(this, 'scopeObjProp')"
scopeObj
data-dojo-props="widgetProp: at(this, 'widgetsInTemplateProp')"
指向 widgets-in-template 实例中的一个属性。相对数据绑定使target
小部件中的属性在 DOM 中通过“rel:”特殊语法引用。将对象设置为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>
希望这可以帮助。
最好的,阿基拉