2015-08-19 2 views
0

Я использую вложенную петлю в приложении ExtJs. Я хочу использовать break, продолжайте в нижнем коде. Я знаю, что мы можем использовать return false для выхода из цикла, но когда это не работает должным образом.Перерыв, продолжение в ExtJs

Предположим, что первый (внешний) цикл будет работать от 1 до 10, а второй (внутренний) цикл будет выполняться от 1 до 5. Теперь, если условие истинно (1 == 1), тогда его необходимо добавить элемент (флажок) в панель только один раз.. После добавления элемента он должен быть продолжен, а внешний цикл будет продолжен.

Примечание. Каждый раз, когда будет создана другая панель (в соответствии с моим полным кодом приложения), поэтому, если условие будет истинным, каждая панель имеет только один флажок.

Дайте мне знать, если что-то непонятное.

Мой код не работает в скрипалле. Я не знаю почему. Согласно нижеприведенному коду и моему пониманию, при щелчке на кнопке следует создать два флажка.

Процесс должен быть запущен -

  1. 1 == 1 будет истинным или если условие выполняется после того, как этот внутренний цикл будет остановлен.
  2. 2 == 2 будет истинным, а внутренний цикл будет остановлен.

    Ext.onReady(function() { 
        var window = new Ext.Window({ 
        id: 'grdWindow', 
        width: 400, 
        title: 'Grid Samples', 
         items: [ 
          { 
           xtype: 'button', 
           text: 'testing', 
           handler: function() { 
    
            var obj1 = [ 
             { a: 1}, 
             { a: 2}, 
             { a: 3}, 
             { a: 4} 
            ]; 
    
            var obj2 = [ 
             { a: 1 }, 
             { a: 2 } 
            ]; 
    
            var panel = Ext.getCmp('pnlTesting'); 
            Ext.each(obj1, function (ob1) { 
             Ext.each(obj2, function (ob2) { 
              if (ob1.a == ob2.a) { 
               panel.add({ 
                items:[ 
                 { 
                  xtype: 'checkbox', 
                 } 
                 ] 
               }); 
              } 
             }); 
             return false; 
            }); 
           } 
          }, 
          { 
           xtype: 'panel', 
           id: 'pnlTesting', 
           renderTo: Ext.getBody() 
          } 
         ] 
        }).show(); 
    }); 
    
+0

Так что не работают должным образом при использовании 'вернуть false'? – Greendrake

+0

Внешняя петля не запускается, когда я использую return false после завершения внутреннего цикла. Он дает синтаксическую ошибку, если я использую return false перед завершением внутреннего цикла. –

+0

Покажите свой код с 'return false' или лучше скрипкой. Не должно быть никаких проблем с возвратом 'false'. – Greendrake

ответ

1

Вы нарушаете петлю внешнего сразу после обработки первого элемента obj1. Пункт {a: 2} никогда не проверяется в отношении любого предмета obj2.

Вместо этого, вы должны разорвать внутренней петли, и только тогда, когда добавляются флажок:

Ext.each(obj1, function (ob1) { 
    Ext.each(obj2, function (ob2) { 
     if (ob1.a == ob2.a) { 
      container.add({ 
       items:[ 
        { 
         xtype: 'checkbox', 
        } 
       ] 
      }); 
      return false; 
     } 
    }); 
}); 

См скрипка: https://fiddle.sencha.com/#fiddle/sgb

+0

Да, я понял. Это была небольшая ошибка со мной. Спасибо. –

Смежные вопросы