【问题标题】:Dojox/mvc/at model scopeDojox/mvc/在模型范围内
【发布时间】:2013-07-19 21:16:07
【问题描述】:

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

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

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

【问题讨论】:

    标签: model-view-controller dojo


    【解决方案1】:

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

    1. 运行Dojo parserparser.parse(rootNode, {propsThis: scopeObj}); 可以使thisdata-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>
      

    希望这会有所帮助。

    最好, 晃

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 2016-11-06
      • 2012-03-09
      • 1970-01-01
      相关资源
      最近更新 更多