2013-07-19 36 views
2

在dojox/mvc包中使用Stateful對象時,聲明性示例似乎在全局名稱空間(沒有定義「var」關鍵字)中具有目標模型。這違反了良好Javascript設計的一般做法,通過污染全局命名空間,更不用說使用不同模型的困難和混亂。Dojox/mvc /在模型範圍內

我的問題是,在()中聲明的範圍是什麼,以及如何使用位於特定上下文/範圍內的模型?

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

回答

6

dojox/mvc/at API通常在使用是data-dojo-props。三件事情在我腦海中談論設置「範圍」有:

  1. parser.parse(rootNode, {propsThis: scopeObj});運行Dojo parser您可以在data-dojo-props指定對象做出this。這樣data-dojo-props="widgetProp: at(this, 'scopeObjProp')"指向scopeObj中的一個屬性。
  2. widgets-in-template,data-dojo-props="widgetProp: at(this, 'widgetsInTemplateProp')"指向小部件在模板實例中的屬性。
  3. Relative data binding使得在DOM製作widget 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> 
    

希望這有助於。

最好, Akira