我如何使用一个“if”来做同样的工作?

时间:2015-05-21 02:58:35

标签: javascript jquery methods return-value

我希望你们一切顺利。

我有方法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,方法subscriberconsole.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和{{1}的顺序})只使用一个if,因为我必须在方法中删除两个。

参考图像。

在B部分,在订阅者方法中,我有一个无效的方案。

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

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

SOLUTION:

我替换了这段代码:

llenarTareasTemp

by: if(bEncontrado){ self.conRegistro(); }else{ self.sinRegistro(); 方法return bEncontrado;和方法llenarTareasTemp

在方法llenarTareasRegistradas中,在subscriberconsole.info(data.datos);之间我放了:

self.showModal();

以相同的方式工作,但只有一个“if”,无论如何,谢谢大家,如果我感到困惑,请对不起。

2 个答案:

答案 0 :(得分: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
                }
            }   
        }
    });
}

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

答案 1 :(得分:0)

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

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