2012-02-21 184 views
1

我有一個控制器定義是這樣的:呼叫控制器功能

Ext.define('MyApp.controller.TestController', { 
    extend: 'Ext.app.Controller', 

    config: { 

    }, 

    showTest: function() { 
     alert('aaa'); 
    } 

}); 

我如何可以調用showTest()函數?我試過這個: MyApp.controller.TestController.showTest();

但這不起作用。任何人有任何想法如何做到這一點.. ??因爲我想從onClick甚至在div中調用該函數。例如:

<div onclick="call.controller.func(1)">User 1</div> 
<div onclick="call.controller.func(2)">User 2</div> 
etc. 

回答

2

不,你做錯了。

假設你在你的視圖按鈕:

control : { 
    'myapp-login button[ui=confirm]' : { 
     tap : 'showTest' 
    } 
}, 

// function showTest 
showTest: function() { 
    alert('aaa'); 
} 
在上面的例子

所以:你control對象內部

Ext.define('MyApp.view.Login', { 
extend : 'Ext.form.Panel', 
xtype : 'myapp-login', 

config : { 
    items : [ 
     { 
      xtype : 'fieldset', 
      name : 'login-fieldset', 
      title : 'Login credentials', 
      instructions: 'Fill in your email and password)', 
      items : [ 
       { 
        xtype: 'emailfield', 
        name : 'email', 
        label: 'Email' 
       }, 
       { 
        xtype: 'passwordfield', 
        name : 'password', 
        label: 'Password' 
       } 
      ] 
     }, 
     { 
      xtype : 'button', 
      name : 'Login', 
      text : 'Login', 
      ui : 'confirm' 
     } 
    ] 
} 
}); 

的在你的控制器,裏面的xtype當用戶點擊調用myapp-login控制器將執行showTest()方法。

+0

你如何將params傳遞給函數? – 2012-04-16 16:28:11

+0

默認參數也自動傳遞給你的函數。所以,按鈕的水龍頭功能傳遞3個參數(http://docs.sencha.com/touch/2-0/#!/api/Ext.Button-event-tap),所以這3個參數傳遞給你的函數那麼... – adis 2012-04-16 17:14:29

+0

是的,這是一個愚蠢的問題。我想通了。謝謝 – 2012-04-16 18:44:11