模仿angularjs上的jquery触发器

时间:2016-02-19 00:03:10

标签: php jquery angularjs

我有一个角度应用程序,在控制器初始化我有一个jquery事件,打开一个灯箱(Custombox),我需要我关闭此框运行其他角度控制器,从PHP会话更新购物车项目代码是

aplicacion.controller("fichaTec",["$scope","$http","$stateParams","$sce","locaciones","carrito", function($scope,$http,$stateParams,$sce,locaciones, carrito){
    //$scope = $scope.$new(true);
    $scope.destino = $stateParams.path;
    $scope.path=$stateParams.nad;


    jqueryUtilities();

    $scope.init=function(destino,nado){
        jq(document).on("click","#openReserva", function(e) {
                e.preventDefault();
                e.stopImmediatePropagation();
                var $value=jq(e.target).attr("data-value").split(",.-");
                var $valueDes = $value[1];
                $value=$value[0];

                Custombox.open({
                    target: 'pages/reservaTour.php',
                    effect: 'blur',
                    cache:false,
                    overlayOpacity:0.7,
                    position:["center","center"],
                    loading:{
                        delay:6000,
                        parent:['sk-chasing-dots'],
                        childrens:[
                            ['sk-dot1','sk-child'],
                            ['sk-dot2','sk-child'],
                        ]
                    },

                    complete:function(e){
                        jqueryUtilities();
                        var hoy = new Date();

                        jq('#dateReserva').datetimepicker({
                            format:"DD-MM-YYYY",
                            locale:'es',
                            minDate:hoy.setDate(hoy.getDate()+2),
                            //daysOfWeekDisabled:dias
                        });

                        jq("#locacionesReserva").selectpicker("val",$valueDes)

                        jq(document).on("change","#locacionesReserva",function(e,value){
                            e.preventDefault();
                            e.stopImmediatePropagation();
                            jq("#errLocacionesCR").fadeOut();
                            var valDes= jq(this).prop("value");

                            jq.ajax({
                                    url:"_assets/_controllers/getNadosSelect.php",
                                    type:"POST",
                                    dataType:"JSON",
                                    data:{ destino: valDes }
                                }).done(function(data){
                                    jq("#programa").find("option").remove();
                                    var element=data;
                                    jq("#programa").append(jq("<option></option>").attr("value","0").text("Seleccione"));
                                    for(var i=0; i<element.length; i++)
                                    {
                                        jq("#programa").append(jq("<option></option>").attr("value",element[i].clave).text(element[i].nombre));
                                    }
                                    jq("#programa").selectpicker('refresh');
                                    jq("#programa").selectpicker('val',value);
                            });
                            getDiasInhabiles();
                        });

                        jq(document).on("change","#programa",function(e){
                            e.preventDefault();
                            e.stopImmediatePropagation();
                            jq("#errProgramaCR").fadeOut();
                            var destino = jq("#locacionesReserva").prop("value");
                            var nado=jq("#programa").prop("value");
                            //alert("des "+destino+" nado "+nado);
                            jq.ajax({
                                        url:"_assets/_controllers/getNadosHorasSelect.php",
                                        type:"POST",
                                        dataType:"JSON",
                                        data:{ destino: destino, nado:nado }
                                }).done(function(data){
                                    jq("#hora").find("option").remove();    
                                    var element=data;
                                    jq("#hora").append(jq("<option></option>").attr("value","0").text("Seleccione"));
                                    for(var i=0; i<element.length; i++)
                                    {
                                        jq("#hora").append(jq("<option></option>").attr("value",element[i].hora).text(element[i].hora));
                                    }
                                    jq("#hora").selectpicker('refresh');
                            });
                            getDiasInhabiles();
                        });

                        jq(document).on("change","#hora",function(e){
                            e.preventDefault();
                            e.stopImmediatePropagation();
                            jq("#errHoraCR").fadeOut();
                            getDiasInhabiles();
                        });

                        jq(document).on("dp.change","#dateReserva",function(e){
                            e.preventDefault();
                            e.stopImmediatePropagation();
                            //alert(jq("#fechaServ").prop("value"));
                            if(jq("#fechaServ").prop("value")!=""){
                                jq("#errFechaCR").fadeOut();
                            }
                        });

                        jq(document).on("change","#adultosRev",function(e){
                            e.preventDefault();
                            e.stopImmediatePropagation();

                            if(jq(this).prop("value")!=0){
                                jq("#errAdultosCR").fadeOut();
                            }
                        });

                        jq(document).on("click","#botonAddReserva",function(e){
                            e.preventDefault();
                            e.stopImmediatePropagation();
                            var band = true;
                            var $nado = jq("#programa").prop("value");
                            var $destino = jq("#locacionesReserva").prop("value");
                            var $fechaServ = jq("#fechaServ").prop("value");
                            var $hora=jq("#hora").prop("value");
                            var $adultos=jq("#adultosRev").prop("value");
                            var $ninos=jq("#ninosRev").prop("value");
                            //alert($nado+" - "+$destino+" - - "+$fechaServ+" -- "+$hora+" - - - "+$adultos+"----"+$ninos);
                            if($nado==0){
                                jq("#errProgramaCR").fadeIn().addClass("bg-danger").text("Seleccione nado");
                                band=false;
                            }
                            if($destino==0){
                                jq("#errLocacionesCR").fadeIn().addClass("bg-danger").text("Seleccione destino");
                                band=false;
                            }
                            if($fechaServ==""){
                                jq("#errFechaCR").fadeIn().addClass("bg-danger").text("Ingrese fecha");
                                band=false;
                            }
                            if($hora==0){
                                jq("#errHoraCR").fadeIn().addClass("bg-danger").text("Seleccione hora");
                                band=false;
                            }
                            if($adultos==0){
                                jq("#errAdultosCR").fadeIn().addClass("bg-danger").text("Seleccione adultos");
                                band=false;     
                            }

                            if(band){
                                jq.ajax({
                                            url:"_assets/_controllers/addCarrito.php",
                                            type:"POST",
                                            data:{
                                                    nado:$nado,
                                                    destino:$destino,
                                                    fecha:$fechaServ,
                                                    hora:$hora,
                                                    adulto:$adultos,
                                                    ninos:$ninos,
                                                }
                                        }).done(function(data){
                                            var dat=data.split(",");

                                            if(dat[0]=="add"){
                                                jq("#mensajeR").css("display","block").addClass("alert-success").text("Se ha agregado el nado");
                                                setTimeout(function(){ 
                                                    //jq("#viewCarrito").trigger("click"); 
                                                    carrito.getTotalItems().then(function(total){
                                                        $scope.totalItems=total.total;
                                                    });

                                                    Custombox.close() 
                                                },2500);


                                            }

                                });
                            }

                        });
                        jq("#locacionesReserva").trigger("change",[$value]);
                        setTimeout(function(){jq("#programa").trigger("change");},500);
                        //setTimeout(function(){jq("#")})


                    },

                    close:function(e){
                        e.preventDefault();
                        e.stopImmediatePropagation();
                        //i need run other controller or emulate ng-click here
                    }
                });
            });


        },function(res){console.error("error ",status,data);});
    }
    $scope.init($scope.destino,$scope.path);
    /*carrito.getTotalItems().then(function(total){
            $scope.totalItems=total.total;
        });*/

}]);

/ *这里是其他控制器* /     aplicacion.controller(&#34; carritoMenu&#34; [&#34; $范围&#34;&#34; carrito&#34;,函数($范围,carrito){         // alert(&#34; la funcion es&#34; + carrito.getTotalItems());         $ scope.cambio =函数(){

        carrito.getTotalItems().then(function(total){
            $scope.totalItems=total.total;
        })




    }
}]);

/* factory that return php session value */

aplicacion.factory("carrito",function($q,$http){
    var locaciones=null;
    var items="";

    function getDatos(){
            var defer=$q.defer();
            $http.get("_assets/_controllers/getLocacionesSelect.php",{cache: "true"}).success(function(res){
                //locaciones= res;
                //this.resolve();
                //console.log(locaciones.length);
                defer.resolve(res);
            });
        return defer.promise;
    }



    function getTotalItems(){
        var defer=$q.defer();
        $http.get("_assets/_controllers/getItems.php",{cache: "true"}).success(function(res){
            //alert("dkdkkddkdkdk");
            defer.resolve(res);
        });
        return defer.promise;
    }

    var interfaz={
        getLocaciones:getDatos,

        getTotalItems:getTotalItems,
        //setItems:setItems
    }

    return interfaz;
});

}

抱歉我的英文不好,如果我发布错误代码(这是我的第一次,请帮帮我)谢谢

0 个答案:

没有答案