Javascript 角度-将工厂变量复制到专用变量

Javascript 角度-将工厂变量复制到专用变量,javascript,angularjs,Javascript,Angularjs,我用的是角度服务。这是我的服务: 'use strict'; app.factory('Daytime',function () { var factory = {}; var _data = {}; factory.defaultCalendar = { 'kerry': { first: '7,16', second: '16.05,24', firstStart: 7,

我用的是角度服务。这是我的服务:

'use strict';

app.factory('Daytime',function () {
    var factory = {};
    var _data = {};
    factory.defaultCalendar = {
        'kerry': {
            first: '7,16',
            second: '16.05,24',
            firstStart: 7,
            firstEnd: 16,
            secondStart: 16.05,
            secondEnd: 24
        },
        'william' : {
            first: '7,16',
            second: '16.05,24',
            firstStart: 7,
            firstEnd: 16,
            secondStart: 16.05,
            secondEnd: 24
         }

    };

});
我想将factory.defaultCalendar复制到_数据。我使用了两种方法:

_data = angular.copy(this.defaultCalendar);

虽然在这两个之后,我得到了未定义的_数据


如何将
factory.defaultCalendar
复制到我工厂中的另一个变量中?

您需要在工厂内返回
factory
变量。

您需要在工厂内返回
factory
变量。

使用
factory.defaultCalendar={

您正在将对象
default
创建到名为
factory
的变量中

因此,使用
\u data=angular.copy(this.defaultCalendar);
不会简单地起作用,因为您的
defaultCalendar
对象它位于变量
工厂
内,这与
此引用完全不同

解决方案 更改您的
\u data=angular.copy(此.defaultCalendar);

\u data=angular.copy(factory.defaultCalendar);

在默认日历初始化之后

整个代码可以更改为:

app.factory('Daytime',function () {
   var factory = {};
   factory.defaultCalendar = {
       'kerry': {
        first: '7,16',
        second: '16.05,24',
        firstStart: 7,
        firstEnd: 16,
        secondStart: 16.05,
        secondEnd: 24
    },
    'william' : {
        first: '7,16',
        second: '16.05,24',
        firstStart: 7,
        firstEnd: 16,
        secondStart: 16.05,
        secondEnd: 24
     }
   };
   var _data = angular.copy(factory.defaultCalendar); //changed position, and 'this' to 'factory'
});

使用
factory.defaultCalendar={

您正在将对象
default
创建到名为
factory
的变量中

因此,使用
\u data=angular.copy(this.defaultCalendar);
不会简单地起作用,因为您的
defaultCalendar
对象它位于变量
工厂
内,这与
此引用完全不同

解决方案 更改您的
\u data=angular.copy(此.defaultCalendar);

\u data=angular.copy(factory.defaultCalendar);

在默认日历初始化之后

整个代码可以更改为:

app.factory('Daytime',function () {
   var factory = {};
   factory.defaultCalendar = {
       'kerry': {
        first: '7,16',
        second: '16.05,24',
        firstStart: 7,
        firstEnd: 16,
        secondStart: 16.05,
        secondEnd: 24
    },
    'william' : {
        first: '7,16',
        second: '16.05,24',
        firstStart: 7,
        firstEnd: 16,
        secondStart: 16.05,
        secondEnd: 24
     }
   };
   var _data = angular.copy(factory.defaultCalendar); //changed position, and 'this' to 'factory'
});

你不能在工厂里使用这种引用,你应该直接写
\u data=factory.defaultCalendar;


您可以参考不同角度提供者的文档

您不能在工厂中使用此参考,您应该直接编写
\u data=factory.defaultCalendar;


您可以参考不同角度提供程序的文档

在该函数中,您需要返回
工厂
,否则服务只是未定义?
\u data=factory。默认日历
应该在这里测试过:在该函数中,您需要返回
工厂
,否则服务只是未定义?
>_data=factory.defaultCalendar
我应该在这里测试:我可以在哪里使用它?我可以在哪里使用它?