Angular - 将工厂变量复制到私有变量中

时间:2016-09-24 14:42:31

标签: javascript angularjs

我正在使用Angular服务。这是我的服务:

# Favorite items of user
has_many :favorite_items # just the 'relationships'
has_many :itemfavorites, through: :favorite_item, source: :item # the actual items the user favorites

我想将 factory.defaultCalendar 复制到 _data 。我用了两种方法:

# Favorited by users
has_many :favorite_items # just the 'relationships'
has_many :itemsfavorited_by, through: :favorite_items, source: :user # the actual users favoriting an item

并且

'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
         }

    };

});

虽然在他们两个之后,我得到_data为undefined。

如何将_data = angular.copy(this.defaultCalendar); 复制到我工厂的另一个变量中?

3 个答案:

答案 0 :(得分:1)

使用factory.defaultCalendar = {

您正在将一个对象default创建为名为factory变量

因此,使用_data = angular.copy(this.defaultCalendar);并不简单,因为您的defaultCalendar对象位于变量 factory内,完全不同< / strong>来自this.参考。

解决方案

更改您的_data = angular.copy(this.defaultCalendar);

_data = angular.copy(factory.defaultCalendar);

在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'
});

答案 1 :(得分:1)

你不能在工厂使用这个参考,你应该直接写       this.Users

您可以参考不同角度提供者here

的文档

答案 2 :(得分:0)

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