【问题标题】:How can I use one "if" to do the same job?我如何使用一个“如果”来完成相同的工作?
【发布时间】:2015-05-21 02:58:35
【问题描述】:

希望你们一切都好。

我有方法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);
        }

IN ONE IF,在方法@​​987654330@ 中,在console.info(data.datos);self.showModal(); 之间。

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

要做我想做的事,我认为我必须替换一些东西。(我评论了那些东西)

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

参考图片。

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

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

请原谅我的英语,谢谢。

解决方案:

我替换这段代码:

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

by : 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();         
         }

并以相同的方式工作,但使用一个 "if" ,无论如何,谢谢大家,如果我感到困惑,请见谅。

【问题讨论】:

  • bEncontrado 方法中没有 bEncontrado 变量。这是其他两种方法中的局部变量。
  • 您希望subscriber 调用其他方法并在其if 中使用它们的值吗?

标签: javascript jquery methods return-value


【解决方案1】:

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

我想你知道该怎么做。对不起,我的英语不是很好。

【讨论】:

    【解决方案2】:

    你的问题不是很清楚,但也许这就是你想要的:

    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;
        });
    },
    

    【讨论】:

    • 没有完全工作,我需要从这两种方法中删除“if”“bEncontrado”并在订阅者中创建一个“if”。我需要替换 var bEncontrado=true;通过在这两种方法中返回 true 和 bEncontrado=flase 通过返回 false。我需要一个我不知道的布尔值。我需要打电话给它的真假,就像以前一样,但如果……对不起,如果我不清楚……我有点绝望
    • 不,还完全不清楚。不要用if 语句解释你想做什么,而是解释这些函数在做什么,以及你要解决什么问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2022-12-06
    • 2022-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多