Панель управления ol-ext и функция в контроллере - PullRequest
0 голосов
/ 08 мая 2019

У меня есть приложение extjs, в котором я использую панель управления ol-ext.Панель управления находится в файле MyApp.js , а функция, которую я хочу вызвать нажатием на кнопку, принадлежащую панели управления, находится в соответствующем контроллере MyAppController .В MyApp.js:

var testFuction = function(){
   return this.getController().updateImages;
};

var mainbar = new ol.control.Bar();
var first = new ol.control.Button (
 {
       html: '1',
       //handler: 'updateImages',
       //reference: 'locationShowImageButton',
        handleClick: testFuction,
 });
       
//Standard Controls
mainbar.addControl (first);
mainbar.setPosition('bottom-right');
this.map.addControl(mainbar);

В MyAppController:

updateImages: function (obj) {
            var self = this;
            this.getView().cleanImageLayers();
            var selectedFloors = ; //it should be the value of the  ol.control.Button, so 1
            if (this.lookupReference('locationShowImageButton').pressed) {
               .....

1 Ответ

1 голос
/ 09 мая 2019

Сначала проверьте, если this.getController() in MyApp.js относится к MyAppController.

Вы не можете использовать ol.control.Button как компонент sencha.

Youследует использовать this в вашей области видимости MyApp.js.

var mainbar = new ol.control.Bar();
var me = this;
var first = new ol.control.Button (
 {
        html: '1',
        handleClick: function () {
            me.getController().updateImages();
        }
 });

//Standard Controls
mainbar.addControl (first);
mainbar.setPosition('bottom-right');
this.map.addControl(mainbar);
...