2015-04-23 4 views
1

У меня есть часть кода, с которой я работаю, где пользователь может выбрать загрузку «фрагмента» круговой диаграммы или всего этого.jQuery/Javascript boolean

Когда они нажимают на кусочек, я посылаю переменную под названием source, которая сообщает мне, из какого фрагмента она появилась.

Сейчас я работаю над кнопкой «Загрузить все». Источником для этого будет просто all.

Это то, что мой цикл выглядит следующим образом, если пользователь выбирает slice:

// Loop over our data 
$.each(seed.dataset,function(key, value){ 
    if(this[col] == slice){ 
     table += '<tr>'; 
     table += '<td>'+this.escalationID+'</td>'; 
     table += '<td>'+this.escReasonID+'</td>'; 
     table += '<td>'+this.reasonText+'</td>'; 
     table += '<td>'+this.escCreatedBy+'</td>'; 
     table += '<td>'+this.escCreatorFirst+'</td>'; 
     table += '<td>'+this.escCreatorLast+'</td>'; 
     table += '</tr>'; 
    } 
}); 

IF заявление в цикле является то, что контролирует данные его в том числе в табличной переменной. Мой вопрос в том, как я могу выбрать, когда я хочу использовать этот оператор IF или игнорировать его (разрешая добавление всех данных в таблицу var)?

Очевидным было бы обернуть его в другой оператор IF, но я чувствую, что может быть более чистый способ, не дублируя все данные таблицы.

Конечный результат будет bool, говорящий, что if source=All включает в себя все строки else if source=slice, чтобы включить оператор IF, чтобы включить только те данные, которые мы ищем.

UPDATE

По существу я ищу более чистый способ сделать это:

// Loop over our data 
    $.each(seed.dataset,function(key, value){ 

     if(source == 'slice'){ 

     if(this[col] == slice){ 
      table += '<tr>'; 
      table += '<td>'+this.escalationID+'</td>'; 
      table += '<td>'+this.escReasonID+'</td>'; 
      table += '<td>'+this.reasonText+'</td>'; 
      table += '<td>'+this.escCreatedBy+'</td>'; 
      table += '<td>'+this.escCreatorFirst+'</td>'; 
      table += '<td>'+this.escCreatorLast+'</td>'; 
      table += '</tr>'; 
     } 

     // We are downloading all so ignore the constraint 
     }else{ 
      table += '<tr>'; 
      table += '<td>'+this.escalationID+'</td>'; 
      table += '<td>'+this.escReasonID+'</td>'; 
      table += '<td>'+this.reasonText+'</td>'; 
      table += '<td>'+this.escCreatedBy+'</td>'; 
      table += '<td>'+this.escCreatorFirst+'</td>'; 
      table += '<td>'+this.escCreatorLast+'</td>'; 
      table += '</tr>'; 
     } 
    }); 

ответ

1

Вы можете использовать другие логические сказать ignoreAll как «ИЛИ» условие с существующим при условии, как показано ниже

// Loop over our data 
var ignoreAll = true; // change its value as per your requirement 
$.each(seed.dataset,function(key, value){ 
    if(ignoreAll || this[col] == slice){ 
     table += '<tr>'; 
     table += '<td>'+this.escalationID+'</td>'; 
     table += '<td>'+this.escReasonID+'</td>'; 
     table += '<td>'+this.reasonText+'</td>'; 
     table += '<td>'+this.escCreatedBy+'</td>'; 
     table += '<td>'+this.escCreatorFirst+'</td>'; 
     table += '<td>'+this.escCreatorLast+'</td>'; 
     table += '</tr>'; 
    } 
}); 
+0

Я добавляю это прямо сейчас, чтобы проверить его, но из того, что я могу сказать, если 'ignoreAll' является ложным, ни одна из данных не будет включена? – SBB

+0

Если 'ignoreAll' является ложным, он будет проверять' this [col] == slice', потому что он находится в режиме OR, а не в режиме AND. если второе условие истинно, то оно добавит строку в таблицу. –

+0

Gotcha, у меня была опечатка; прекрасно работает! – SBB

0
$.each(seed.dataset,function(key, value){ 
     if (source != 'slice' || this[col] == slice){ 
      table += '<tr>'; 
      // etc. 

Альтернативно:

$.each(seed.dataset,function(key, value){ 
     if (source == 'all' || this[col] == slice){ 
      table += '<tr>'; 
      // etc. 
0

Проверьте приведенный ниже код.

Если текущий элемент является срезом, он проверяется, чтобы убедиться, что это правильный фрагмент. Если это так, вызывается getSlice(), и цикл $.each() прерывается, чтобы избежать ненужных итераций.

function getSlice(that) { 
    var table = ''; 
    table += '<tr>'; 
    table += '<td>' + that.escalationID + '</td>'; 
    table += '<td>' + that.escReasonID + '</td>'; 
    table += '<td>' + that.reasonText + '</td>'; 
    table += '<td>' + that.escCreatedBy + '</td>'; 
    table += '<td>' + that.escCreatorFirst + '</td>'; 
    table += '<td>' + that.escCreatorLast + '</td>'; 
    table += '</tr>'; 
    return table; 
} 

// Loop over our data 
$.each(seed.dataset, function (key, value) { 
    table += source == 'slice' ? (this[col] == slice ? true & getSlice(this) : false) : getSlice(this); 
    if (table === true) return false; // break out of loop 
}); 
Смежные вопросы