Как я могу использовать одно "если", чтобы сделать ту же работу?

Надеюсь, у вас все хорошо.

У меня есть метод subscriber:

subscriber: function() {

    var self = this;

    self.hideError();
    self.sb.subscribe('seleccionProyecto_seleccionarTarea', function(data) {
        console.info(data);
        console.info(data.datos);
        // HERE I NEED TO RESUME THE CODE
        self.showModal();
        self.idPanel=data.iCont;
    });
},

У меня есть метод llenarTareasTemp:

llenarTareasTemp: function(data){

    var self = this;
    $("#opt1").html("");
    var bEncontrado=false; // REPLACED BY RETURN FALSE.

    $.each(data.datos, function(index,value) {
        if(value!=undefined){ 
            for(var iCont=0;iCont<value.length;iCont++){
                if(self.objTareasTemp.idProyecto==value[iCont].idProyecto){
                    console.info(self.objTareasTemp.idProyecto,"=",value[iCont].idProyecto)
                    $("#opt1").append("<option>"+value[iCont].nombreTarea+"</option>"); 
                    $("#select_seleccionar_proyecto_id").selectpicker('refresh');
                    bEncontrado=true; // REPLACED BY RETURN TRUE.
                }
            }   
        }
    });
        //if(bEncontrado){
        //  self.conRegistro();
        //}else{
        //  self.sinRegistro();
        //  self.llenarTareasRegistradas(self.aDataServer);
        //}
},

И у меня есть метод llenarTareasRegistradas:

llenarTareasRegistradas: function(data){

    var self = this;    

    $("#opt2").html(""); 
        for (var i = 1; i < data.length; i++){
            if(data[i].nombre_tarea != null){
                var cTareas = "<option value="+i+">"+data[i].nombre_tarea+"</option>"; 
                $("#opt2").append(cTareas); 
                $("#select_seleccionar_proyecto_id").selectpicker('refresh');  
                var bEncontrado=true; // REPLACED BY RETURN TRUE.
            }else{
                $("#opt2").append(""); 
                $("#select_seleccionar_proyecto_id").selectpicker('refresh');
                bEncontrado=false;  // REPLACED BY RETURN FALSE.
            }
        }      
        // if(bEncontrado){
        //self.conRegistro();
        //}else{
        //  self.sinRegistro();
        //} 
}, 

Эти коды работают хорошо, но я должен суммировать это:

    if(bEncontrado){
            self.conRegistro();
        }else{
            self.sinRegistro();
        } 

И это:

if(bEncontrado){
            self.conRegistro();
        }else{
            self.sinRegistro();
            self.llenarTareasRegistradas(self.aDataServer);
        }

В ОДНОМ ЕСЛИ в методе subscriberмежду console.info(data.datos); а также self.showModal();,

`self.conRegistro();` and `self.sinRegistro();` they are methods that call messages only.

Чтобы сделать то, что я хочу, я думаю, что я должен заменить некоторые вещи.(Я прокомментировал эти вещи)

ТАК в методе subscriber между console.info(data.datos); а также self.showModal();Я не знаю, как заказать два if(bEncontrado) (от llenarTareasRegistradas а также llenarTareasTemp) используя только один, если, потому что я должен удалить два, если в методах.

Эталонное изображение.

В части B, по методу подписчика, у меня есть небольшая схема, которая ничего не делает.

http://www.uppic.com/uploads/14321765021.jpg (можно увеличить)

Пожалуйста, извините мой английский и спасибо.

РЕШЕНИЕ:

Я заменяю этот код:

   if(bEncontrado){
   self.conRegistro();
   }else{
   self.sinRegistro();

от: return bEncontrado;В методе llenarTareasTemp и в методе llenarTareasRegistradas

И в методе subscriberмежду console.info(data.datos); а также self.showModal(); Я кладу:

        var temp = Boolean(self.llenarTareasTemp(data));
        var server = Boolean(self.llenarTareasRegistradas(self.aDataServer));

        if (temp || server) {
            self.conRegistro();
        }else{
            self.sinRegistro();         
         }

И работать так же, но с одним "если", в любом случае, спасибо вам всем, и извините, если я запутался.

2 ответа

Вы должны определить одну функцию "isEncontrado" следующим образом:

/** 
 * if encontrado call self.conRegistro() else call self.sinRegistro()
 * @param b is Encontrado
 * @param isNeedCall is need call self.llenarTareasRegistradas()
 */
isEncontrado : function(b, isNeedCall) {
    if (b) {
        self.conRegistro();
    } else {
        self.sinRegistro();
        if (isNeedCall) 
           self.llenarTareasRegistradas(self.aDataServer);
    }
}

Затем вызовите эту функцию. пример:

llenarTareasTemp: function(data){

    var self = this;
    $("#opt1").html("");
    isEncontrado(false); // call function isEncontrado 
    $.each(data.datos, function(index,value) {
        if(value!=undefined){ 
            for(var iCont=0;iCont<value.length;iCont++){
                if(self.objTareasTemp.idProyecto==value[iCont].idProyecto){
                    console.info(self.objTareasTemp.idProyecto,"=",value[iCont].idProyecto)
                    $("#opt1").append("<option>"+value[iCont].nombreTarea+"</option>"); 
                    $("#select_seleccionar_proyecto_id").selectpicker('refresh');
                    isEncontrado(true, true); //call function isEncontrado
                }
            }   
        }
    });
}

Я думаю, ты знаешь, что делать. Извините, мой английский не очень хорош.

Ваш вопрос не очень понятен, но, возможно, это то, что вы хотите:

subscriber: function() {

    var self = this;

    self.hideError();
    self.sb.subscribe('seleccionProyecto_seleccionarTarea', function(data) {
        console.info(data);
        console.info(data.datos);
        if (self.llenarTareasTemp(data)) {
            self.conRegistro();
        } else {
            self.sinRegistro();
            self.llenarTareasRegistradas(self.aDataServer);
        }
        self.showModal();
        self.idPanel=data.iCont;
    });
},
Другие вопросы по тегам