0

我正在開發我第一個Sencha Touch 2項目,所以我對它還不是很熟悉。我正在使用Sencha文檔,並一直谷歌和Stackoverflowing很多,但似乎無法找到這個問題的答案。eventlisters不能在控制器中工作

我正在MVC工作,並希望添加一些eventlisteners(在控制器)來控制我的看法。無論我嘗試什麼,它們似乎都不起作用,儘管它們在視圖中添加它們時起作用。當然,這不是最好的實踐,所以我想知道我在做什麼錯了?

這是我的控制器的外觀:

Ext.define("workingTime.controller.MainController", { 
extend: "Ext.app.Controller", 
views: ['Main'], 

refs: [ 
    { 
     sl_break: '#sl_break' 
    }, 
    { 
     sl_work: '#sl_work' 
    } 
], 

init: function() { 
    this.control({ 
     'sl_break': { 
      change: 'setBreakTime' 
     } 
    }); 
}, 

setBreakTime: function(newValue) { 
    console.log('set'); 
} 
}); 

這是我的觀點看起來如何(有聽衆還增加):

Ext.define("workingTime.view.Main", { 
extend: 'Ext.form.Panel', 
controllers: ['MainController'], 

requires: [ 
    'Ext.field.Slider' 
], 

config: { 
    fullscreen: true, 

    items: [ 
     { 
      xtype: 'label', 
      html: '<p class="label_field">Take a <span>five</span> minute break<p>' 
     }, 
     { 
      xtype: 'sliderfield', 
      name: 'sl_break', 
      value: 5, 
      minValue: 1, 
      maxValue: 30, 
      style: { 
       'background-color' : '#FFecc0' 
      }, 
      listeners: { 
       change: function() { 
        alert('changed'); 
       } 
      } 
     }, 
     { 

    ] 
} 
}); 

告訴我,如果你需要更多的信息。

+0

refs應該包裝在配置對象中。 –

回答

0

我會嘗試:(無初始化函數)

config: { 
    refs: { 
     sl_break: '#sl_break', 
     sl_work: '#sl_work' 
    }, 

    control: { 
     sl_break: { 
      change: 'setBreakTime' 
     } 
    } 
}, 
+0

你也可以看看:http://stackoverflow.com/questions/14029292/tap-event-for-ext-carousel-carousel – Michael

+0

似乎並沒有工作...也許我應該嘗試通過訪問滑塊行動而不是一個ID? – silvdb

0
在控制器

在參加sl_break: 'main sliderfield[itemId=sl_break]'

Ext.define("workingTime.controller.MainController", { 
extend: "Ext.app.Controller", 
views: ['Main'], 

refs: [ 
    { 
     sl_break: 'main sliderfield[itemId=sl_break]' 
    } 
], 

init: function() { 
    this.control({ 
     'sl_break': { 
      change: 'setBreakTime' 
     } 
    }); 
}, 

setBreakTime: function(newValue) { 
    console.log('set'); 
} 
}); 

在視圖中添加alias到主itemId到sliderfield

Ext.define("workingTime.view.Main", { 
    extend: 'Ext.form.Panel', 
    controllers: ['MainController'], 
    alias: 'widget.main', 
    requires: [ 
     'Ext.field.Slider' 
    ], 

    config: { 
     fullscreen: true, 

     items: [ 
      { 
       xtype: 'label', 
       html: '<p class="label_field">Take a <span>five</span> minute break<p>' 
      }, 
      { 
       xtype: 'sliderfield', 
       name: 'sl_break', 
itemId:'sl_break', 
       value: 5, 
       minValue: 1, 
       maxValue: 30, 
       style: { 
        'background-color' : '#FFecc0' 
       }, 
       listeners: { 
        change: function() { 
         alert('changed'); 
        } 
       } 
      }, 
      { 

     ] 
    } 
    }); 

我希望它能工作

相關問題