Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用ng init加载数据_Angularjs_Controller_Angularjs Ng Init_Ng Init - Fatal编程技术网

Angularjs 使用ng init加载数据

Angularjs 使用ng init加载数据,angularjs,controller,angularjs-ng-init,ng-init,Angularjs,Controller,Angularjs Ng Init,Ng Init,使用ngInit angular指令在html的三个下拉列表中加载数据时出现问题 我从ng init调用控制器中的initAll()方法。此函数加载三个选定元素的值列表,但仅显示品牌的值列表。其他人没有,我得到了错误: 响应未定义 如果我评论其中两个,例如: //$scope.initBrandsSelect(); $scope.initHotelsSelect(); //$scope.initPortalsSelect(); 酒店显示,我没有收

使用ngInit angular指令在html的三个下拉列表中加载数据时出现问题

我从ng init调用控制器中的initAll()方法。此函数加载三个选定元素的值列表,但仅显示品牌的值列表。其他人没有,我得到了错误:

响应未定义

如果我评论其中两个,例如:

        //$scope.initBrandsSelect();
        $scope.initHotelsSelect();
        //$scope.initPortalsSelect();
酒店显示,我没有收到任何错误,那么发生了什么?是否与在ngInit上加载太多内容有关

您可以看到下面的代码:

dashboardCtrl.js

angular.module("app.user").controller('DashboardCtrl',
    ['$scope', '$http', 'CookiesModel', 'NetWorkModel', 'DescargaCsvModel', 'NotificacionModel',
        '$timeout', 'UserModel', 'SocketIOModel','DashboardModel',
    function ($scope, $upload, CookiesModel, NetWorkModel, DescargaCsvModel, NotificacionModel,
              $timeout, UserModel, SocketIOModel, DashboardModel) {
        $scope.UserModel = UserModel;
        $scope.DashboardModel = DashboardModel;

        $scope.initAll = function(){
            $scope.initBrandsSelect();
            $scope.initHotelsSelect();
            $scope.initPortalsSelect();
        };

        $scope.getReviews = function() {
            $scope.intranetLoading.value = true;
            DashboardModel.getReviews( function() {


            });
            $scope.intranetLoading.value = false;
        };

        $scope.initBrandsSelect = function() {
            $scope.intranetLoading.value = true;
            DashboardModel.getAllBrands( function(response) {
                $scope.DashboardModel.brands = response.brands;

            });
        };

        $scope.initHotelsSelect = function() {
            DashboardModel.getAllHotels( function(response) {
                $scope.DashboardModel.hotels = response.hotels;
                $scope.intranetLoading.value = false;
            });
        };

        $scope.initPortalsSelect = function() {
            DashboardModel.getAllPortals( function(response) {
                $scope.DashboardModel.portals = response.portals;
                $scope.intranetLoading.value = false;
            });
        };

}]);
dashboardModel.js

angular.module("app.opinium").service("DashboardModel", ['$filter', 'NetWorkModel', 'NotificacionModel', function ($filter, NetWorkModel, NotificacionModel) {
    var self = this; // Guardamos la referencia


    this.filterReviews = {
            "brandId": 471,
            "hotId" : 92,           
            "portalId" : 1,         
            "startDate" : new Date(2016, 0, 1),
            "endDate" : new Date()              
        };


    this.brands = []
    this.hotels = []
    this.portals = []
    this.reviews = []


    this.getReviews = function () {
        var metodoPeticion = 'GetReviews';
        var dataEntrada = {
            "brand_id": self.filterReviews.brandId,
            "hot_id" : self.filterReviews.hotId,            
            "portal_id" : self.filterReviews.portalId,              
            "start_date" : $filter('date')(self.filterReviews.startDate, "yyyy-MM-dd"),
            "end_date" : $filter('date')(self.filterReviews.endDate, "yyyy-MM-dd")             
        };
        NetWorkModel.sendRequestOpiniumServlet("review", metodoPeticion, dataEntrada, "JSON", function (response) {
            self.reviews = response.Salida.reviews;
        });       
    };

    this.getAllBrands = function(callback) {        
        var metodoPeticion = 'GetAllBrands';
        var dataEntrada = {};

        NetWorkModel.sendRequestOpiniumServlet("brand", metodoPeticion, dataEntrada, "JSON", function(response){
            callback(response.Salida);
        }); 
    };

    this.getAllHotels = function(callback) {        
        var metodoPeticion = 'GetAllHotels';
        var dataEntrada = {};

        NetWorkModel.sendRequestOpiniumServlet("hotel", metodoPeticion, dataEntrada, "JSON", function(response){
            callback(response.Salida);
        }); 
    };

    this.getAllPortals = function(callback) {       
        var metodoPeticion = 'GetAllPortals';
        var dataEntrada = {};

        NetWorkModel.sendRequestOpiniumServlet("portal", metodoPeticion, dataEntrada, "JSON", function(response){
            callback(response.Salida);
        }); 
    };

}]);
dashboard.html

<div ng-controller="DashboardCtrl" ng-init="intranetLoading.value=false;initAll();" class="container-fluid ng-scope">

<!--{{UserModel.user | json}}-->


<div class="row ">
    <div class="col-sm-1">
        Marca:
    </div>
    <div class="col-sm-2">
        <select class="form-control" ng-model="DashboardModel.filterReviews.brandId"
        ng-options="elementOption.id as elementOption.name for elementOption in DashboardModel.brands"></select>
    </div>
    <div class="col-sm-9">
    </div>    
</div>
<div class="row ">
    <div class="col-sm-1">
        Hotel:
    </div>
    <div class="col-sm-2">
        <select class="form-control" ng-model="DashboardModel.filterReviews.hotId"
        ng-options="elementOption.id as elementOption.name for elementOption in DashboardModel.hotels"></select>
    </div>
    <div class="col-sm-9">
    </div>    
</div>
<div class="row ">
    <div class="col-sm-1">
        Portal:
    </div>
    <div class="col-sm-2">
        <select class="form-control" ng-model="DashboardModel.filterReviews.portalId"
        ng-options="elementOption.id as elementOption.name for elementOption in DashboardModel.portals"></select>
    </div>
    <div class="col-sm-9">
    </div> 
</div>
<div class="row ">  
    <div class="col-sm-1">
        Inicio:
    </div>
    <div class="col-sm-2">
        <input type="date" class="form-control" ng-model="DashboardModel.filterReviews.startDate">
    </div>
    <div class="col-sm-9">
    </div>
</div>
<div class="row ">
    <div class="col-sm-1">
        Fin:
    </div>
    <div class="col-sm-2">
        <input type="date" class="form-control" ng-model="DashboardModel.filterReviews.endDate">
    </div>
    <div class="col-sm-9">
    </div>
</div>
<div class="row ">
    <div class="col-sm-1">
    </div>
    <div class="col-sm-2">
        <button  class="btn btn-primary" ng-click="getReviews()">Filtrar</button>
    </div>
    <div class="col-sm-9">
    </div>    
</div>
<hr>
<div class="row">
    <div class="col-sm-12">
        <span>Respuesta servlet: {{DashboardModel.reviews}}</span>
    </div>
</div>

</div>
sendHttpJSON方法:

        this.sendHttpJSON = function (urlService, callback) {

            var requestAux = angular.copy(self.request);

            this.request = {
                "Servicio": "",
                "Metodo": "",
                "Tipo": "",
                "Entrada": {},
                "Id": "",
                setHistorial_cambios: undefined,
                "URL": "",
                "recuerdame_id": ""
            };

            $http({
                method: self.servers.method, url: urlService,
//                data: $.param(self.request),
                data: JSON.stringify(requestAux),
                headers: {'Content-Type': 'application/x-www-form-urlencoded'}
            }).success(function (data, status, headers, cfg) {
                //self.response = data;


                //Miramos si estamos en el login o la cookie de recordar usuario ha caducado, guardamos el id en la cookie
                if ((data.Metodo === 'GetLogin' && data.Servicio === 'usuarios' && data.Id !== '') || CookiesModel.getCookie("intranet_session_id") === "undefined" || CookiesModel.getCookie("intranet_session_id") !== data.Id) {
                    //Guardamos id en la cookie
                    if (data.Salida !== undefined) {
                        CookiesModel.setCookie("intranet_session_id", data.Id, parseInt(self.tiempo_sesion_usuario));
                        CookiesModel.setCookie("last_session_id", data.Id, 5 * 1440); // 5 dias a minutos
                        if (data.Salida.recordarUsuario === true) {
                            if(CookiesModel.getCookie("recordar_usuario") === "undefined") {
                                CookiesModel.setCookie("recordar_usuario", new Date().toUTCString(), 5 * 1440);
                            }
                        } else if (CookiesModel.getCookie("intranet_session_id") !== "undefined") {
                            // NOOP: Cookie 'recordar_usuario' queda con misma caducidad
                        } else {
                            CookiesModel.deleteCookie("recordar_usuario");
                        }
                    }
                }

                if (!errorPeticion(data)) {
//                    callback(self.response);
                    callback(data);
                } else {
                    //Session expira o hay errores reenvio al login

                    self.logout = true;
//                    window.location = appConfig.location.login;
                }

            }).error(function (data, status, headers, cfg) {
                //Mostrar error al ususario
                NotificacionModel.mostrarNotificacion({
                    title: 'Servidor: ' + urlService,
                    message: 'Error en la conexión con el servidor',
                    size: 'xlarge', //small,large
                    type: 'error', //error,notice,warning
                    duration: '5000'
                });
                callback("undefined");
            });
        };
resetValue()方法:


似乎函数
sendRequestOpiniumServlet
中存在问题。显示此函数的代码。我添加了您要求的代码。我认为原因是
NetWorkModel
是singleton。您将其用作
self
内部
sendRequestOpiniumServlet
。可能在函数
sendHttpJSON
中的某个地方,您正在使用
NetWorkModel
字段来保存返回的数据。如果您异步请求一个函数,那么它将被覆盖。或者通过
resetValue
的方法删除数据。为
resetValue
sendHttpCSV
提供代码。或者创建JSFIDLE。我认为这两件事都在发生。关键是我认为我不应该修改NetWorkModel中的代码,所以我必须以另一种方式避免这种情况
        this.sendHttpJSON = function (urlService, callback) {

            var requestAux = angular.copy(self.request);

            this.request = {
                "Servicio": "",
                "Metodo": "",
                "Tipo": "",
                "Entrada": {},
                "Id": "",
                setHistorial_cambios: undefined,
                "URL": "",
                "recuerdame_id": ""
            };

            $http({
                method: self.servers.method, url: urlService,
//                data: $.param(self.request),
                data: JSON.stringify(requestAux),
                headers: {'Content-Type': 'application/x-www-form-urlencoded'}
            }).success(function (data, status, headers, cfg) {
                //self.response = data;


                //Miramos si estamos en el login o la cookie de recordar usuario ha caducado, guardamos el id en la cookie
                if ((data.Metodo === 'GetLogin' && data.Servicio === 'usuarios' && data.Id !== '') || CookiesModel.getCookie("intranet_session_id") === "undefined" || CookiesModel.getCookie("intranet_session_id") !== data.Id) {
                    //Guardamos id en la cookie
                    if (data.Salida !== undefined) {
                        CookiesModel.setCookie("intranet_session_id", data.Id, parseInt(self.tiempo_sesion_usuario));
                        CookiesModel.setCookie("last_session_id", data.Id, 5 * 1440); // 5 dias a minutos
                        if (data.Salida.recordarUsuario === true) {
                            if(CookiesModel.getCookie("recordar_usuario") === "undefined") {
                                CookiesModel.setCookie("recordar_usuario", new Date().toUTCString(), 5 * 1440);
                            }
                        } else if (CookiesModel.getCookie("intranet_session_id") !== "undefined") {
                            // NOOP: Cookie 'recordar_usuario' queda con misma caducidad
                        } else {
                            CookiesModel.deleteCookie("recordar_usuario");
                        }
                    }
                }

                if (!errorPeticion(data)) {
//                    callback(self.response);
                    callback(data);
                } else {
                    //Session expira o hay errores reenvio al login

                    self.logout = true;
//                    window.location = appConfig.location.login;
                }

            }).error(function (data, status, headers, cfg) {
                //Mostrar error al ususario
                NotificacionModel.mostrarNotificacion({
                    title: 'Servidor: ' + urlService,
                    message: 'Error en la conexión con el servidor',
                    size: 'xlarge', //small,large
                    type: 'error', //error,notice,warning
                    duration: '5000'
                });
                callback("undefined");
            });
        };
        this.resetValue = function () {

            self.request.Servicio = "";
            self.request.Metodo = "";
            self.request.Tipo = "";
            self.request.Entrada = {};

            self.request.URL = $location.absUrl();

            if (CookiesModel.existObject("intranet_session_id")) {
                self.request.Id = CookiesModel.getCookie("intranet_session_id");
//               console.log("--- time:",self.tiempo_sesion_usuario);
                if (self.tiempo_sesion_usuario !== undefined && self.tiempo_sesion_usuario !== "") {
                    CookiesModel.setCookie("intranet_session_id", self.request.Id, parseInt(self.tiempo_sesion_usuario));
                } else {
                    //Descomentar para alargar 60min la session cada vez que se realize una session
                    CookiesModel.setCookie("intranet_session_id", self.request.Id, 60);
                }

            } else {
                self.request.Id = "";
            }

            if (CookiesModel.getCookie("recordar_usuario") !== "undefined" && CookiesModel.getCookie("last_session_id") !== "undefined") {
                self.request.recuerdame_id = CookiesModel.getCookie("last_session_id");
            } else {
                self.request.recuerdame_id = "";
            }

        };