在 dojox/mvc 包中使用有状态对象时,声明性示例似乎在全局命名空间中具有目标模型(没有使用“var”关键字定义)。通过污染全局命名空间,这违反了良好 Javascript 设计的一般做法,更不用说使不同模型的使用变得困难和困惑了。
我的问题是,声明式 at() 的范围是什么?如何使用位于特定上下文/范围内的模型?
http://dojotoolkit.org/reference-guide/1.9/dojox/mvc.html#id6
最佳答案
在哪里dojox/mvc/at API 通常用于 data-dojo-props .关于在那里设置“范围”,我想到了三件事:
- 正在运行 Dojo parser与
parser.parse(rootNode, {propsThis: scopeObj});
你可以制作this
在 data-dojo-props指定的对象。这样data-dojo-props="widgetProp: at(this, 'scopeObjProp')"
指向scopeObj
中的属性. - 在widgets-in-template ,
data-dojo-props="widgetProp: at(this, 'widgetsInTemplateProp')"
指向 widgets-in-template 实例中的一个属性。 Relative data binding使
target
DOM 中的小部件中的属性通过“rel:”特殊语法引用。将对象设置为target
那里的属性(property),例如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>
希望这对您有所帮助。
最好的, 晃
关于model-view-controller - Dojox/mvc/at 模型范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755632/