Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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
Javascript 如何在ionic(angular.js)中调用相同服务的其他函数_Javascript_Angularjs_Ionic Framework_Ionic_Angularjs Service - Fatal编程技术网

Javascript 如何在ionic(angular.js)中调用相同服务的其他函数

Javascript 如何在ionic(angular.js)中调用相同服务的其他函数,javascript,angularjs,ionic-framework,ionic,angularjs-service,Javascript,Angularjs,Ionic Framework,Ionic,Angularjs Service,我正在使用ionic框架开发一款移动应用程序。我已经创建了一个像这样的公用事业服务 .service('CommonUtilityService', function($q) { return { parseJsonDate:function(jsonDate){ var offset = new Date().getTimezoneOffset() * 60000; var parts =

我正在使用ionic框架开发一款移动应用程序。我已经创建了一个像这样的公用事业服务

 .service('CommonUtilityService', function($q) {
        return {
            parseJsonDate:function(jsonDate){
                var offset = new Date().getTimezoneOffset() * 60000;
                var parts = /\/Date\((-?\d+)([+-]\d{2})?(\d{2})?.*/.exec(jsonDate);

                if (parts[2] == undefined)
                    parts[2] = 0;

                if (parts[3] == undefined)
                    parts[3] = 0;

                return new Date(+parts[1] + offset + parts[2]*3600000 + parts[3]*60000);
            },
            daysBetween:function(date1String, date2String){
                var ONE_DAY = 1000 * 60 * 60 * 24;
                var ONE_MINUTE = 1000 * 60;

                var d1 = new Date(date1String);
                var d2 = new Date(date2String);
                var d1_ms = d1.getTime() - d1.getTimezoneOffset() * ONE_MINUTE;
                var d2_ms = d2.getTime() - d2.getTimezoneOffset() * ONE_MINUTE;

                return Math.floor(d1_ms - d2_ms/ONE_DAY);
            },
            getNumberOfDays:function(jsonDate){
               // var date = parseJsonDate(jsonDate);
                var date = new Date();
                var today = new Date();
                return this.daysBetween(today,date);
            }
        }
    })
当我试图在getNumberOfDays函数中调用daysBetween函数时,它给出了一个错误

this.daysBetween is not a function
谁能告诉我如何在getNumberOfDays函数中调用daysBetween函数。

实际上。您可以尝试像这样重构服务

 .service('CommonUtilityService', function($q) {
        return {
            parseJsonDate:function(jsonDate){
                var offset = new Date().getTimezoneOffset() * 60000;
                var parts = /\/Date\((-?\d+)([+-]\d{2})?(\d{2})?.*/.exec(jsonDate);

                if (parts[2] == undefined)
                    parts[2] = 0;

                if (parts[3] == undefined)
                    parts[3] = 0;

                return new Date(+parts[1] + offset + parts[2]*3600000 + parts[3]*60000);
            },
            daysBetween:function(date1String, date2String){
                var ONE_DAY = 1000 * 60 * 60 * 24;
                var ONE_MINUTE = 1000 * 60;

                var d1 = new Date(date1String);
                var d2 = new Date(date2String);
                var d1_ms = d1.getTime() - d1.getTimezoneOffset() * ONE_MINUTE;
                var d2_ms = d2.getTime() - d2.getTimezoneOffset() * ONE_MINUTE;

                return Math.floor(d1_ms - d2_ms/ONE_DAY);
            },
            getNumberOfDays:function(jsonDate){
               // var date = parseJsonDate(jsonDate);
                var date = new Date();
                var today = new Date();
                return this.daysBetween(today,date);
            }
        }
    })
服务

 .service('CommonUtilityService', function($q) {
     var CommonUtilityService = this;
     CommonUtilityService.parseJsonDate = function(jsonDate) {
         var offset = new Date().getTimezoneOffset() * 60000;
         var parts = /\/Date\((-?\d+)([+-]\d{2})?(\d{2})?.*/.exec(jsonDate);

         if (parts[2] == undefined)
             parts[2] = 0;

         if (parts[3] == undefined)
             parts[3] = 0;

         return new Date(+parts[1] + offset + parts[2] * 3600000 + parts[3] * 60000);
     }
     CommonUtilityService.daysBetween = function(date1String, date2String) {
         var ONE_DAY = 1000 * 60 * 60 * 24;
         var ONE_MINUTE = 1000 * 60;

         var d1 = new Date(date1String);
         var d2 = new Date(date2String);
         var d1_ms = d1.getTime() - d1.getTimezoneOffset() * ONE_MINUTE;
         var d2_ms = d2.getTime() - d2.getTimezoneOffset() * ONE_MINUTE;

         return Math.floor(d1_ms - d2_ms / ONE_DAY);
     }
     CommonUtilityService.getNumberOfDays = function(jsonDate) {
         // var date = parseJsonDate(jsonDate);
         var date = new Date();
         var today = new Date();
         return CommonUtilityService.daysBetween(today, date);
     }
 })
服务是一个构造函数,它使用 新关键字。您可以向服务对象添加属性和函数 通过使用this关键字。不像工厂,它不会回来 任何内容(它返回一个包含方法的对象)

代码

 .service('CommonUtilityService', function($q) {
     var CommonUtilityService = this;
     CommonUtilityService.parseJsonDate = function(jsonDate) {
         var offset = new Date().getTimezoneOffset() * 60000;
         var parts = /\/Date\((-?\d+)([+-]\d{2})?(\d{2})?.*/.exec(jsonDate);

         if (parts[2] == undefined)
             parts[2] = 0;

         if (parts[3] == undefined)
             parts[3] = 0;

         return new Date(+parts[1] + offset + parts[2] * 3600000 + parts[3] * 60000);
     }
     CommonUtilityService.daysBetween = function(date1String, date2String) {
         var ONE_DAY = 1000 * 60 * 60 * 24;
         var ONE_MINUTE = 1000 * 60;

         var d1 = new Date(date1String);
         var d2 = new Date(date2String);
         var d1_ms = d1.getTime() - d1.getTimezoneOffset() * ONE_MINUTE;
         var d2_ms = d2.getTime() - d2.getTimezoneOffset() * ONE_MINUTE;

         return Math.floor(d1_ms - d2_ms / ONE_DAY);
     }
     CommonUtilityService.getNumberOfDays = function(jsonDate) {
         // var date = parseJsonDate(jsonDate);
         var date = new Date();
         var today = new Date();
         return CommonUtilityService.daysBetween(today, date);
     }
 })

您使用的是模式三:Hybrid/Facade,因此在这里您必须使用@pankajparkar解释的this


尝试此公用事业服务。中间日期(今天,日期)已尝试但无效。它给出了CommonUtilityService未定义错误。请尝试以下操作:在函数中创建一个变量,如下所示:var selfFunction=this;并返回selfFunction.daysBetween(今天,日期);已经尝试过了,但是出现了相同的错误。您是如何调用
getNumberOfDays
函数的?@NeelKamal查看添加的链接..这会让您更好地了解该服务&factory@NeelKamal干杯快乐编码:)