2013-08-26 37 views
5
vấn đề

Tôi đã có với bộ điều khiển của tôiExtJS 4.2 Parameter trong thính hoạt

Ext.define('app.controller.myController', { 
    init: function() { 
     this.control({ 
      '#myinputfield': { 
       change: this.textFieldChange(parameter) 
      } 
     }) 
    }, 
    textFieldChange: function(parameter) { 
     //do something 
    } 
}); 

hình dáng của nó giống như này vấn đề là khi tôi đưa ra thông số ở đây

change: this.textFieldChange(parameter) 

sau đó lửa của nó lên sau khi trang web tải và tôi không biết tại sao.

không có thông số chờ sự kiện thay đổi như vậy any1 có thể giúp tôi không?

Trả lời

7

Đó là vì:

change: this.textFieldChange đây bạn đang đưa ra các tài liệu tham khảo cho chức năng này vào thuộc tính này

change: this.textFieldChange(parameter) đây bạn đang đưa ra các kết quả của hàm vào thuộc tính này (mà nếu chúng ta don' t sử dụng trở lại, sau đó nó sẽ là undefined).

Bạn có thể sử dụng biến eOpts trong định nghĩa chức năng, cho tham số tùy chỉnh gửi, thấy trong ví dụ:

Ext.define('app.controller.myController', { 
    init: function() { 
     this.control({ 
      '#myinputfield': { 
       change: { 
        fn : this.textFieldChange, 
        params : { 
         param1: 'something' 
        } 
       } 
      } 
     }) 
    }, 
    textFieldChange: function(textfield, newValue, oldValue, eOpts) { 
     var params = eOpts.params; 
     console.log(params.param1); 
     //do something 
    } 
});