グループユーザーコントロールがあり、JavaScriptがコントロール内で定義されています。1つのページに、独立して機能する2つのそのようなコントロールがあります。レンダリングされたJavaScriptは、次のようなものです。
//control 1
var Groups = (function () {
var obj = {};
obj.selectedid = 2;
return obj;
}());
//control 2
var Groups = (function () {
var obj = {};
obj.selectedid = 2; //it is different here, to keep it simple i just hardcoded as '2'
return obj;
}());
ページの1番目のグループ変数(コントロール)にアクセスする方法を教えてください。Groups [0]のようなもので結果が得られると思いましたが、そうではありません。
返信ありがとうございます。とても有難い。明確にするために、さらに情報を追加しています。ユーザーコントロールにはデュアルリストボックスが含まれており、ユーザーはlist1からlist2に値を追加/削除できます。したがって、このロジックをすべて以下のようにカプセル化しました。
var Groups = (function () {
var obj = {};
obj.selectedid = 2;
//some local functions for internal operations such as
function moveGroups(source, target){
}
//there are public functions to initialize this control or to add groups as below
// Groups can be added from external page by calling Groups.AddGroups(data);
obj.AddGroups = function(data) {
//refers to local variables and functions and adds data to listboxes
};
return obj;
}());
問題は、ページにそのようなグループコントロールが2つあることです。Group1には、独自のデュアルリストと同様にGroup2が含まれています。ここで、両方のオブジェクトのAddGroups関数にアクセスする必要があります。これは、ページからGroups1.AddGroups(data)またはGroups2.AddGroups(data)のように独立して機能します。
私は以下の解決策で解決しました。
var Groups = Groups || []; //Check object already exists
Groups.push(
//kept all the existing code here...
(function () {
var obj = {};
obj.selectedid = 2;
//some local functions for internal operations such as
function moveGroups(source, target){
}
//there are public functions to initialize this control or to add groups as below
// Groups can be added from external page by calling Groups.AddGroups(data);
obj.AddGroups = function(data) {
//refers to local variables and functions and adds data to listboxes
};
return obj;
}())
);
今私のページでは、私は使用して参照します:
Groups[0].AddAvailGroups();
Groups[1].AddAvailGroups();