2010-12-14 26 views
1

クライアント・コントロール内では、実行するスクリプトとともにボタンを生成します。 このボタンをクリックしたときにオブジェクトのPrint()メソッドを呼び出すと、結果の値をPrint()にも渡す必要があります。パラメータで呼び出すAjaxクライアント・オブジェクト・メソッド

どうすればいいですか?私は私の問題に対する解決策がないと思い
:更新

Type.registerNamespace("CustomControls"); 

CustomControls.FirstObj = function(element) { 
    CustomControls.FirstObj.initializeBase(this, [element]); 

    this._targetControlDelegate === null 
    this.markUp = '<div><input type="button" id="theButton" value="Button!" onclick="Foo()"/><script type="text/javascript">function Foo() {return "result";}</script></div>'; 

} 
CustomControls.FirstObj.prototype = { 

    dispose: function() {    
     CustomControls.FirstObj.callBaseMethod(this, 'dispose'); 
    }, 

    initialize: function() { 

      var div; 
      div = document.createElement('div'); 
      div.name = div.id = "divName"; 


      div.innerHTML = this.markUp;   
      document.body.appendChild(div);  

      var targetControl = $get("theButton"); 
//   if (targetControl != null) { 
//    if (this._targetControlDelegate === null) { 
//     this._targetControlDelegate = Function.createDelegate(this, this._targetControlHandler); 
//    } 
//    Sys.UI.DomEvent.addHandler(targetControl, 'click', this._targetControlDelegate); 
//   } 
     CustomControls.FirstObj.callBaseMethod(this, 'initialize'); 

    }, 
// _targetControlHandler: function(event) { 
//   
//  
// }, 

    _Print: function(result) { 
     //Alert Result 
    }, 


} 
CustomControls.FirstObj.registerClass('CustomControls.FirstObj', Sys.UI.Control); 
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded(); 

これは私のオブジェクトです。
あなたが提案できる代替アプローチがあるかもしれませんか?

+0

結果値をPrint()に渡す必要があることを明確にすることはできますか?あなたは 'onclick'ハンドラから返された値を参照していますか? –

+0

はい、ボタンをクリックすると、関数Foo(){return "result";}が呼び出されます。私はこのfooの結果をオブジェクトに渡したいと思います。 – urker

+0

これは、オブジェクトがマークアップ、マークアップ(一部のスクリプトを含む)を入力として受け取った場合、スクリプトの結果をオブジェクトに戻す必要があります。 – urker

答えて

0

一つの方法は、それだけで作成したボタンのプロパティにFirstObjオブジェクトを格納するために、次のようになります。

:あなたのマークアップ内部 FirstObjオブジェクトを参照するために、そのプロパティを使用できるようになる

initialize: function() { 
    var div = document.createElement("div"); 
    div.name = div.id = "divName"; 
    div.innerHTML = this.markUp; 
    document.body.appendChild(div); 

    var targetControl = $get("theButton"); 
    targetControl.__firstObj = this; 

    CustomControls.FirstObj.callBaseMethod(this, 'initialize'); 
} 

CustomControls.FirstObj = function(element) { 
    CustomControls.FirstObj.initializeBase(this, [element]); 

    this._targetControlDelegate = null; 
    this.markUp = '<div><input type="button" id="theButton" value="Button!"' 
     + 'onclick="this.__firstObj._Print(Foo());" />' 
     + '<script type="text/javascript">function Foo() {return "result";}' 
     + '</script></div>'; 
} 
+0

今日は後で試してみます。 – urker

関連する問題