Dojox / mvc /在型号范围内

时间:2013-07-19 21:16:07

标签: model-view-controller dojo

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

我的问题是,()声明的范围是什么,以及如何使用位于特定上下文/范围内的模型?

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

1 个答案:

答案 0 :(得分:6)

dojox/mvc/at通常使用data-dojo-props API。Dojo parser我想到了三件事情,即在那里设置“范围”:

  1. 使用parser.parse(rootNode, {propsThis: scopeObj});运行data-dojo-props,您可以在widgets-in-template Relative data binding指定的对象中this。这样data-dojo-props="widgetProp: at(this, 'scopeObjProp')"指向scopeObj中的属性。
  2. 在{{3}}中,data-dojo-props="widgetProp: at(this, 'widgetsInTemplateProp')"指向小部件在模板实例中的属性。
  3. {{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>
    
  4. 希望这有帮助。

    最佳, 晃