2

在 dojox/mvc 包中使用有状态对象时,声明性示例似乎在全局命名空间中具有目标模型(定义时没有使用“var”关键字)。这通过污染全局命名空间违反了良好 Javascript 设计的一般做法,更不用说使不同模型的使用变得困难和混乱了。

我的问题是,该声明性 at() 的范围是什么?如何使用位于某个上下文/范围内的模型?

http://dojotoolkit.org/reference-guide/1.9/dojox/mvc.html#id6

4

1 回答 1

6

dojox /mvc/at API 通常用于data-dojo-props 的地方。我想到了三件事来谈论在那里设置“范围”:

  1. 与您一起运行Dojo 解析器parser.parse(rootNode, {propsThis: scopeObj});可以使data-dojo-props中的指定对象。以这种方式指向 中的一个属性。thisdata-dojo-props="widgetProp: at(this, 'scopeObjProp')"scopeObj
  2. widgets-in-template中,data-dojo-props="widgetProp: at(this, 'widgetsInTemplateProp')"指向 widgets-in-template 实例中的一个属性。
  3. 相对数据绑定使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>
    

希望这可以帮助。

最好的,阿基拉

于 2013-07-22T08:09:31.963 回答