asp.net에서 JavaScript 객체 이름을 독특하게 만드는 아이디어?
-
03-07-2019 - |
문제
웹 페이지 내부에 두 번 이상 배치 될 ASP.NET 사용자 컨트롤을 만들었습니다. 이 컨트롤에서 나는 다음과 같은 JavaScript 객체를 정의했습니다.
function MyObject( options )
{
this.x = options.x;
}
MyObject.prototype.someFunction=function someFunctionF()
{
return this.x + 1;
}
뒤에있는 코드에서 시작 스크립트에서 myObject를 만들었습니다.
var opts = { x: 99 };
var myObject = new MyObject( opts );
컨트롤의 특정 버튼을 누르면 myObject.SomeFunction ()을 호출합니다. 이제 X의 값은 하나의 컨트롤의 경우 99, 다른 컨트롤의 경우 98이 될 것이라고 가정 해 봅시다. 여기서 문제는 var myobject가 반복되고 마지막 인스턴스 만 중요하다는 것입니다. 확실히 내가 아직 실행하지 않은 일부 개념을 사용하여 var myobject를 독특하게 만들 수있는 방법이 있습니다. 아이디어?
감사,
크레이그
해결책
다음과 같은 귀하의 JavaScript :-
function MyObject(options) { this.x = options.x; }
MyObject.prototype.someFunction = function() { return this.x + 1; }
MyObject.create(id, options) {
if (!this._instances) this._instances = {};
return this._instances[id] = new MyObject(options);
}
MyObject.getInstance(id) { return this._instances[id]; }
다음과 같은 스타트 업 JavaScript :-
MyObject.create(ClientID, {x: 99});
인스턴스를 사용해야하는 다른 코드 (클라이언트 측 온 클릭 이벤트에서는)
String.Format("onclick=\"MyObject.getInstance('{0}').someFunction()\", ClientID);
클라이언트 글로벌 네임 스페이스에 미치는 영향이 낮 으십시오. 컨트롤의 인스턴스가 페이지에 추가 된 인스턴스에 관계없이 MyObject 식별자 만 글로벌 네임 스페이스에 추가됩니다.
다른 팁
하나의 값에 불과한 경우, 기능이 매개 변수로 취하고 onclick 핸들러를 빌드하여 각 컨트롤에 대한 올바른 값을 넣을 수 있도록하는 이유는 무엇입니까? 그보다 더 복잡한 경우 옵션을 배열로 만드는 것을 고려하고 각 컨트롤에 대해 각 특정 컨트롤에 해당하는 배열의 스팟에 올바른 옵션을 삽입하십시오. 그런 다음 적절한 인덱스를 배열로 전달하십시오.
ScriptManager.registerClientscriptBlock을 사용하여 클라이언트쪽에 문자열을 JavaScript 블록으로 등록 하여이 작업을 수행합니다. 그런 다음 {0}, {1} .., {n}를 사용하여 스크립트 문자열을 수정하여 필요한 ID를 주입하기 위해 홀더를 배치 할 수 있습니다. 이것이 가장 우아한 패션인지에 대한 코드 구조에 따라 다르지만 꼬집음으로 작동합니다. 그런 다음 me.clientid에 대한 참조를 사용하여 변수 이름을 주입 할 수 있습니다.
"x"정적 값을 만들고 코드의 어느 곳에서나 액세스 할 수 있습니다.
function MyObject( options ) { MyObject.x = options.x; }
MyObject.x = 99; // static
MyObject.prototype.someFunction = function () { return MyObject.x + 1; }
이렇게하면 MyObject를 재 촉진하지 않고도 코드의 어느 곳에서나 MyObject.x에 액세스 할 수 있습니다.
훌륭한 솔루션 Anthony. 제공되는 다른 솔루션은 훌륭했고 나는 그것들을 고려했지만 나는이 솔루션과 같이 조금 더 우아한 것을 찾고있었습니다. 감사!