2016-03-21 21 views
1

カスタムのFooウィジェットが定義されていますが、これにはローカルの「bar」値があります。そして、 'bar'を何かに変更するonClick関数。このようなHTMLテンプレート内のDojo:ウィジェット・インスタンスは同じ変数を共有します

さて、Fooの複数のインスタンスが定義されていた宣言:

<input id="foo1" data-dojo-type="path-to-wiget/Foo"> 
<input id="foo2" data-dojo-type="path-to-wiget/Foo"> 
<input id="foo3" data-dojo-type="path-to-wiget/Foo"> 

問題は、それらの入力のそれぞれはfoo変数の独自のインスタンスを持っていなければならないということですが、いくつかの理由のために、彼らただ1つのように振る舞う!ことを確認する方法

>> clicking foo1 -> foo1.foo = 'bar' 
>> clicking foo2 -> foo2.foo = 'baz'.. but foo1.foo is set to 'baz' as well.. why? 

、各ウィジェットは独自のfoo変数を持っていますか?

+1

ここにウィジェットコードを追加できますか?私は答えを知っているかもしれないと思うが、私は十分な情報をanwserに持っていない。 –

+0

その変数がどこに定義されているかのように聞こえます。 –

答えて

2

Foo.jsのコードを追加していないため、問題を理解するのが難しいです。

宣言的なアプローチの場合は、data-dojo-propsを使用してインスタンスごとにプロパティを渡すことを検討できます。

次の例では、HTMLマークアップにmyPropの値を渡します。dijit/registryを使用して取得すると、プロパティインスタンスに追加されていることがわかります。

例、コンソールを開いてください。

https://jsfiddle.net/e5dx8nue/

<input id="foo1" data-dojo-type="dijit/form/Button" data-dojo-props="myProp: 'foo1'"> 
<input id="foo2" data-dojo-type="dijit/form/Button" data-dojo-props="myProp: 'foo2'"> 
<input id="foo3" data-dojo-type="dijit/form/Button" data-dojo-props="myProp: 'foo3'"> 

require(['dojo/parser', 'dijit/registry'], function(parser, registry) { 
    parser.parse().then(function() { 
    var widget1 = registry.byId('foo1'); // print foo1 
    var widget2 = registry.byId('foo2'); // print foo2 
    var widget3 = registry.byId('foo3'); // print foo3 
    console.log(widget1.myProp); 
    console.log(widget2.myProp); 
    console.log(widget3.myProp); 
    }); 
}); 

詳しい情報をdeclarative syntax can be found hereに。

関連する問題