繁体   English   中英

如何使用“如果”做同样的工作?

[英]How can I use one “if” to do the same job?

希望大家一切都好。

我有方法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);之间console.info(data.datos); self.showModal();

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

做我想做的事,我认为我必须替换一些东西。

console.info(data.datos);之间的方法subscriber中的SO console.info(data.datos); self.showModal(); ,我不知道如何仅使用ONE if命令两个if(bEncontrado) (来自llenarTareasRegistradasllenarTareasTemp ),因为我必须在方法中删除两个if。

参考图像。

在B部分中,在订阅者方法中,我有一个小方案,什么都不做。

http://www.uppic.com/uploads/14321765021.jpg (您可以缩放)

请对不起我的英语,谢谢。

解:

我替换此代码:

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

作者: return bEncontrado; 在方法llenarTareasTemp和方法llenarTareasRegistradas

并且在方法subscriber ,在console.info(data.datos);之间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();         
         }

并以相同的方式工作,但都带有一个“ if”,无论如何,还是谢谢您,如果让我感到困惑的话,对不起。

您应该这样定义一个函数“ 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;
    });
},

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM