2013-07-19 2 views
2

При использовании объекта Stateful в пакете dojox/mvc декларативные примеры, как представляется, имеют целевую модель в глобальном пространстве имен (определяемом без ключевого слова «var»). Это нарушает общую практику хорошего дизайна Javascript, загрязняя глобальное пространство имен, не говоря уже о том, что использование разных моделей является сложным и беспорядочным.Dojox/mvc/at model scope

Мой вопрос в том, какова область применения этого декларативного в() и как использовать модель, которая находится внутри определенного контекста/области видимости?

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

ответ

6

Где dojox/mvc/at API, как правило, используется в это data-dojo-props. Три вещей, которые мне приходит в голова говорить о создании «сферы» есть:

  1. Запуск Dojo parser с parser.parse(rootNode, {propsThis: scopeObj}); вы можете сделать this в data-dojo-props указанного объекта. Таким образом data-dojo-props="widgetProp: at(this, 'scopeObjProp')" указывает на объект в scopeObj.
  2. В widgets-in-template, data-dojo-props="widgetProp: at(this, 'widgetsInTemplateProp')" указывает на свойство в экземпляре widgets-in-template.
  3. Relative data binding делает 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> 
    

Надеется, что это помогает.

Лучшие, Akira

Смежные вопросы