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です。そこに「スコープ」を設定することについて話すと、3つのことが頭に浮かびます。

  1. Dojo パーサーを実行parser.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. 相対データ バインディングtarget、「rel:」特別な構文を介して参照される DOM 内のウィジェット内のプロパティを作成します。以下の例の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 に答える